本小节介绍监控任务的设计。

主要内容

本小节设计的监控任务用于监控CPU利用率、管脚状态,然后在串口中报告状态。示例较简单,也可以做得更为复杂些。系统结构图如下:
监控任务设计 - 图1

监控任务设计

虽然监控任务基本上也是周期性去检查各个状态;但是系统中没有使用软定时器去周期检查。因为除周期性检查状态外,还需要做一些其它工作,在定时函数中完成并不方便。如果再考虑以后想在监控任务中做一些其它耗时操作,如果这些也放在定时器中去做,则会影响到系统中其它定时器
如下图,监控任务的主要工作是等待邮箱中的消息。一旦等不到超时,则认为需要检查状态。
不过,这种方式有个缺点:比如5s监控,在4.9秒后收到邮箱消息时,则会重新等待延时。

命令链表

我们将所有的命令用一个复杂的联合体来保存,当然你也可以分开写成多个结构体。所有命令块的分配与释放通过存储块来管理。
具体监控任务通过命令链表来配置。该链表中的插入和删除操作完全由监控任务自己来负责,而不是允许命令解释器任务直接操作,这样就避免了两个任务同时读写监控列表问题的情况出现,这样就不必添加任务资源保护处理
此外,通过邮箱来发送请求,命令解释器任务可以在发送请求后立即做自己的工作。监控任务可以在有空闲时再对该命令进行处理。整体效率更高。

重点难点

注意事项

常见问题