【文件属性】:
文件名称:延迟中断处理-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2021-06-03 17:55:43
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.