文件名称:延迟中断处理-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2024-06-23 11:42:23
FreeRTOS 中文
3.2 延迟中断处理 采用二值信号量同步 二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断 同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR) 中只是快速处理少部份工作。如此,中断处理可以说是被”推迟(deferred)”到一个”处理 (handler)”任务。 如果某个中断处理要求特别紧急,其延迟处理任务的优先级可以设为 高,以保证 延迟处理任务随时都抢占系统中的其它任务。这样,延迟处理任务就成为其对应的 ISR 退出后第一个执行的任务,在时间上紧接着 ISR 执行,相当于所有的处理都在 ISR 中 完成一样。这种方案在图 26 中展现。 图 26 中断打断某个任务,但返回到另一个任务 延迟处理任务对一个信号量进行带阻塞性质的”take”调用,意思是进入阻塞态以等 待事件发生。当事件发生后,ISR 对同一个信号量进行”give”操作,使得延迟处理任务 解除阻塞,从而事件在延迟处理任务中得到相应的处理。 “获取(Taking,带走,按通常的说法译为获取)”和”给出(Giving)”信号量从概念上讲, FreeRTOS 69 Designed For Microcontrollers; © 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.