这个或许不会是我的选择,但是使用守护进程延迟处理中断也有优势。比如,占用资源少,可以不用创建额外的Task。再比如,模型简单,处理容易。

         先分析官方的例程:

181_FreeRTOS使用守护进程延迟处理中断_RTOS

         创建了一个周期性的Task,优先级低于Timer的服务。创建了一个模拟的中断。

181_FreeRTOS使用守护进程延迟处理中断_RTOS_02

         周期性任务功能,模拟每500ms产生一次中断。

181_FreeRTOS使用守护进程延迟处理中断_RTOS_03

         ISR中,把相应的处理推送到了守护程序,带着一个有效的参数,是一个不断增加的计数器。

181_FreeRTOS使用守护进程延迟处理中断_RTOS_04

         以上是被推送的处理函数,实现一个简单的打印提示。

         看一下处理效果:

181_FreeRTOS使用守护进程延迟处理中断_RTOS_05

         看的出处理的具体效果。这里,我增加一个测试看看,一个ISR中我做两次推送。

181_FreeRTOS使用守护进程延迟处理中断_RTOS_06

         这么看,这个行为纯粹是依赖于推送,而不是依赖于中断给资源。