学建筑设计出来能干嘛,东莞网络优化推广公司哪家好,做百度网站接到多少客户电话号码,自己做网站需要服务器吗1.事件标志组简介
事件标志位#xff1a;用一个位#xff0c;来表示事件是否发生 事件标志组是一组事件标志位的集合#xff0c; 可以简单的理解事件标志组#xff0c;就是一个整数。
事件标志组的特点#xff1a;
它的每一个位表示一个事件#xff08;高8位不算…1.事件标志组简介
事件标志位用一个位来表示事件是否发生 事件标志组是一组事件标志位的集合 可以简单的理解事件标志组就是一个整数。
事件标志组的特点
它的每一个位表示一个事件高8位不算每一位事件的含义由用户自己决定如bit0表示按键是否按下bit1表示是否接受到消息 这些位的值为1表示事件发生了值为0表示事件未发生任意任务或中断都可以读写这些位可以等待某一位成立或者等待多位同时成立
一个事件组就包含了一个 EventBits_t 数据类型的变量变量类型 EventBits_t 的定义如下所示。EventBits_t 实际上是一个 16 位或 32 位无符号的数据类型 一般设为32位
typedef TickType_t EventBits_t;
#if ( configUSE_16_BIT_TICKS 1 )typedef uint16_t TickType_t;
#else typedef uint32_t TickType_t;
#endif
#define configUSE_16_BIT_TICKS 0 事件标志组与队列、信号量的区别
事件标志组和信号量存在区别它们之间有一个可以沟通的桥梁——队列集通过队列集可以模拟事件标志位
2.事件标志组相关API函数介绍
xEventGroupCreate()使用动态方式创建事件标志组xEventGroupCreateStstic()使用静态方式创建事件标志组xEventGroupClearBits()清零事件标志位xEventGroupClearBitsFromISR()在中断中清零事件标志位xEventGroupSetBits()设置事件标志位xEventGroupSetBitsFromISR()在中断中设置事件标志位xEventGroupWaitBits()等待事件标志位xEventGroupSync()设置事件标志位并等待事件标志位vEventGroupDelete()删除事件标志组xEventGroupGetBits()获取事件组中各事件标志位的值xEventGroupGetBitsFromISR()在中断中获取事件组中各事件标志位的值
2.1.使用动态方式创建事件标志组xEventGroupCreate()
EventGroupHandle_t xEventGroupCreate (void) ; 返回值NULL事件标志组创建失败其他值事件标志组创建成功返回其句柄
2.2.清零事件标志位xEventGroupClearBits()
EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear) 形参xEventGroup待操作的事件标志组句柄形参uxBitsToSet待清零的事件标志位返回值整数清零事件标志位之前事件组中事件标志位的值
2.3.设置事件标志位xEventGroupSetBits()
EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet)形参xEventGroup待操作的事件标志组句柄形参uxBitsToSet待设置的事件标志位返回值整数函数返回时事件组中事件标志位的值
2.4.等待事件标志位xEventGroupWaitBits()
EventBits_t xEventGroupWaitBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait)形参xEvenrGroup等待的事件标志组句柄形参uxBitsToWaitFor等待的事件标志位可以用逻辑或等待多个事件标志位形参xClearOnExit成功等待到事件标志位后清除事件组中对应的事件标志位pdTRUE清除;pdFALSE:不清除形参xWaitForAllBits等待uxBitsToWaitFor 中的所有事件标志位逻辑与pdTRUE等待的位全部为1pdFALSE等待的位某个为1形参xTicksToWait等待的阻塞时间返回值 等待的事件标志位值等待事件标志位成功返回等待到的事件标志位 其他值等待事件标志位失败返回事件组中的事件标志位特点可以等待某一位、也可以等待多位等到期望的事件后还可以清除某些位 注意本函数只能完成设置标志位的某一位或者全部并不能设置某几位。比如8各中的1个或8个不能设置2-7个 2.5.设置事件标志位并等待事件标志位xEventGroupSync()
EventBits_t xEventGroupSync(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,const EventBits_t uxBitsToWaitFor,TickType_t xTicksToWait)形参xEvenrGroup等待的事件标志组句柄uxBitsToSet达到同步点后要设置的事件标志uxBitsToWaitFor等待的事件标志xTicksToWait等待的阻塞时间返回值 等待的事件标志位值等待事件标志位成功返回等待到的事件标志位 其他值等待事件标志位失败返回事件组中的事件标志位特点同步——用于Task1完成后置1等待Task2完成之后才算完成事件
3.事件标志组实验
实验目的学习 FreeRTOS 的事件标志组API函数的使用。实验设计将设计三个任务start_task、task1、task2 start_task-用来创建task1和task2任务并创建事件标志组 task1-读取按键按下键值根据不同键值将事件标志组相应事件位置一模拟事件发生 task2-同时等待事件标志组中的多个事件位当这些事件位都置 1 的话就执行相应的处理