基于STM32结合CubeMX学习Free-RT-OS的源码之事件集(event-group)
创始人
2024-01-21 20:55:55
0

关于cubeMX配置及事件集概述

用cubemx使用事件集时只有使用了cmisis v2 才能使用事件集这个数据结构。

创建一个事件集的高8位不用,低24位用做标记(事件位)。每一个位可相当于裸机开发时的flag,同时,每一位都可以当做二值信号量使用。不同的是,事件集可以判断每一个事件(每一位)的与成立或 或成立。

设置某个数据位则该位写1。

1.等待若干事件位一个成立就算成功  2.等待若干事件位同时成立都成立才算成功。

工作过程

等待数据位(等待条件满足)

API函数

EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait )

xEventGroupWaitBits(事件组,事件位(多个事件位用 | 连接 ,等待成功是否清除数据位,事件位的与还是或的关系,超时时间)

#define event1  (1<<0)

#define event2 (1<<1)

#defien event3 (1<<2)

使用:

xEventGroupWaitBits(eventgroup1,event1 | event2 | event3,pdTRUE, pdTRUE, portMAXDELAY);  //等待第1位,第二位,第三位,同时满足后返回并清除数据位,否则阻塞。

 

内部执行过程

  1. 关调度器
  2. 是否等待阻塞,若不等待则直接返回。
  3. 若等待则判断是数据位的条件是否满足,满足则返回,不满足则继续等待超时阻塞(把当前任务添加进行事件组头部的等待事件位链表中,该任务从就绪链表中移除并放入阻塞链表) 
  4. 开启调度器

设置数据位

API函数

xEventGroupSetBits()

内部执行过程

  1. 关闭调度器
  2. 设置具体的数据位,
  3. 判断是否有任务在等待事件位链表中,若该任务等待的条件满足则唤醒。(唤醒:从等待事件位的链表中移除并从阻塞链表中移除并放入就绪链表)
  4. 开启调度器

等待事件位的任务不能在中断中触发,但写事件位的任务可以在中断中触发。触发后并不会真正的去修改事件位,而是会触发一个软件定时任务,这个软件定时器去执行设置事件位(调用xEventGroupSetBits)。

调用顺序:

xEventGroupSetBitsFromISR->xTimerPendFunctionCallFromIS>vEventGroupSetBitsCallback(作为函数指针传入执行)

	BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ){BaseType_t xReturn;traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet );xReturn = xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken );return xReturn;}

 

 

xEventGroupSetBitsFromISR()             //在中断中写数据位。

为什么不在中断里写事件位?

对于一个实时操作系统来说,在中断中去设置事件位去唤醒其他的任务,这个处理时间是不确定的,会影响实时性。

由上可知,事件位的等待和设置位只是关闭了调度器,中断依然会触发,任务的调度以及硬件层面的中断依然触发,中断里能进行写事件位,不能进行等待事件位操作。在中断里写事件位会并不会去设置事件位而是去触发一个软件定时任务,由定时任务去设置事件位。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...