主题:在项目开发过程中,常常需要增加一些事件进行某些条件的触发,事件可以实现一对多,多对多的同步。 即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理; 也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个 事件。那么FreeRTOS的事件有什么特点了?
1.FreeRTOS 提供的事件具有如下特点:
1.事件只与任务相关联,事件相互独立,一个
32
位的事件集合(
EventBits_t
类型的
变量,实际可用与表示事件的只有
24
位),用于标识该任务发生的事件类型,其
中每一位表示一种事件类型(
0
表示该事件类型未发生、
1
表示该事件类型已经发
生),一共
24
种事件类型。
2.事件仅用于同步,不提供数据传输功能。
3.事件无排队性,即多次向任务设置同一事件
(
如果任务还未来得及读走
)
,等效于
只设置一次。
4.允许多个任务对同一事件进行读写操作。
5.支持事件等待超时机制。
2.FreeRTOS事件应用场景
FreeRTOS
的事件用于事件类型的通讯,无数据传输,也就是说,我们可以
用事件来做
标志位,判断某些事件是否发生了,然后根据结果做处理
。
3.FreeRTOS事件函数接口
①
事件创建函数
xEventGroupCreate()
用法:
static EventGroupHandle_t Event_Handle =NULL;Event_Handle = xEventGroupCreate();if (NULL != Event_Handle)printf(