185_FreeRTOS使用任务通知做ISR的处理推迟

         整个理解思路应该跟信号差不多,仿真环境下能够看的大概也只有初步的效果。接下来,分析一下官方的例程代码。

185_FreeRTOS使用任务通知做ISR的处理推迟

         两个任务创建,一个高优先级的任务用来推迟中断处理,另一个低优先级的用于周期性的调度实现。此外,还有一个模拟中断。

185_FreeRTOS使用任务通知做ISR的处理推迟

         周期性任务,用来生成模拟中断,周期500ms。

185_FreeRTOS使用任务通知做ISR的处理推迟

         中断ISR中,通知中断推迟处理的任务执行,并且进行主动任务切换。

185_FreeRTOS使用任务通知做ISR的处理推迟

         收到通知之后,打印信息。

         运行效果:

185_FreeRTOS使用任务通知做ISR的处理推迟

 

         从代码设计看,似乎可以多次通知。我加一个简单的打印,看看中间的这个提示数据:

185_FreeRTOS使用任务通知做ISR的处理推迟

         运行效果:

185_FreeRTOS使用任务通知做ISR的处理推迟

         通知只有一次。继续修改,在中断中多次提示看一下效果,修改如下:

185_FreeRTOS使用任务通知做ISR的处理推迟

         运行效果:

185_FreeRTOS使用任务通知做ISR的处理推迟

         从中看得出运行的效果,值得一说的是这个通知三次之后是不经过任务切换就把三次执行完了的。