本节课时主要演示了怎样对外部的多个事件进行监控处理。

主要内容

本节课程的主要问题是解决怎样使用RTOS的组件对系统中的各种事件进行集中处理。 我们使用了一个任务集中处理这些事件,实际你也可以创建多个任务,每个任务负责处理至少一个事件。
主要有两个知识点需要关注。

事件监控管理

系统中要监控和管理两个事件,一是按键事件;二是多个外部中断事件。
在前面课时讲多事件的同步时,有讲到过可以用邮箱/事件标志组进行管理,这里选用的是事件标志组,如下图所求。
外部事件处理 - 图1
其中对于按键事件,只是用了一个标志位表明有某个按键按下,但具体是哪一个则需要进一步调用按键驱动,从其内部的键值缓冲区中获得。而对于中断事件,可直接使用事件标志组的标志。
当然,我们也可以使用邮箱来管理,但是相对而言,使用事件标志组更简单、更节省资源。

回调函数

课程中讲到了设置回调函数,这样可以减少后期可能地代码维护工作量。在需要修改代码时,无需再深入到原驱动内部修改代码,只需要在驱动外部修改传入的回调函数指针即可。这个方法可以参考学习。

重点难点

本节演示的是按键和外部IO中断事件,虽然看起来没有接外部设备,但解决方案实际上可以扩展到很多应用。
比如多个外部中断,可以对应到实际你所用硬件板上各个外部设备、片内外设的其它中断,如DMA中断、以太网接收中断等等。当你需要用一个任务对多种事件进行监控处理时,就可以采用这种方法。

注意事项

常见问题