FreeRtos(九):事件标志组

一、概念:

        事件标志位:用一个位,来表示事件是否发生。

        事件标志组:是一组事件标志位的集合,可以当做一个整数。

        特点:事件标志组的每一位表示一个事件(高八位不算),位置1表示事件发生,位置0表示事件未发生。任意任务和中断可以读写这些位。可以等待某一位成立,或者多个位成立。

        一个事件组就包含了一个 EventBits_t 数据类型的变量,变量类型 EventBits_t 的定义如下所示:实际上是一个16位或者32位的无符号的数据类型,根据宏来决定。一般让宏置0,选择32位的无符号数据类型。

        其中高8位用来存储事件标志组的控制信息,低24位用作存储事件标志位,所以一个事件标志组可以存储24个事件标志!

事件标志组,队列,信号量的区别:

二、事件标志组的API函数

1、动态创建事件标志组:

EventGroupHandle_t xEventGroupCreate(void);

2、静态创建事件标志位:

EventGroupHandle_t xEventGroupCreateStatic(StaticEventGroup_t * pxEventGroupBuffer);

3、删除事件标志位:

void vEventGroupDelete(EventGroupHandle_t xEventGroup);

4、等待事件标志位:

EventBits_t xEventGroupWaitBits(

                                                        EventGroupHandle_t   xEventGroup,

                                                        const EventBits_t   uxBitsToWaitFor,

                                                        const BaseType_t   xClearOnExit,

                                                        const BaseType_t   xWaitForAllBits,

                                                        TickType_t   xTicksToWait)

5、设置事件标志位:

EventBits_t xEventGroupSetBits(

                                                        EventGroupHandle_t   xEventGroup,

                                                        const EventBits_t   uxBitsToSet)

中断中设置事件标志位:

BaseType_t xEventGroupSetBitsFromISR(

                                                                        EventGroupHandle_t   xEventGroup,

                                                                        const EventBits_t   uxBitsToSet,

                                                                        BaseType_t *   pxHigherPriorityTaskWoken)

6、清零事件标志位:

EventBits_t xEventGroupClearBits(

                                                                EventGroupHandle_t   xEventGroup,

                                                                const EventBits_t   uxBitsToClear)

中断中清零事件标志位:

BaseType_t xEventGroupClearBitsFromISR(

                                                                                EventGroupHandle_t   EventGroup,

                                                                                const EventBits_t   uxBitsToClear)

7、获取事件组中事件标志位的值:

EventBits_t   xEventGroupGetBits(xEventGroup);

在中断中获取事件标志位:

EventBits_t xEventGroupGetBitsFromISR(EventGroupHandle_t   xEventGroup);

8、同步事件:每个任务只有达到同步点,才能继续执行

EventBits_t   xEventGroupSync(

                                                        EventGroupHandle_t   xEventGroup,

                                                        const EventBits_t   uxBitsToSet,

                                                        const EventBits_t   uxBitsToWaitFor,

                                                        TickType_t   xTicksToWait)

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值