当前位置: 首页 > news >正文

青岛网站快速备案网络推广技术外包

青岛网站快速备案,网络推广技术外包,昆明网络建站公司,阿里云网站空间主机事件标志组简介 事件标志组:用一个比特位来表示事件是否发生 事件标志组是一组事件标志位的集合,可以简单理解为事件标志组就是一个整数。 事件标志组的特点: 它的每一位表示一个事件(高八位不算)每一位事件的含义…

事件标志组简介

事件标志组:用一个比特位来表示事件是否发生

事件标志组是一组事件标志位的集合,可以简单理解为事件标志组就是一个整数。

事件标志组的特点:

  • 它的每一位表示一个事件(高八位不算)
  • 每一位事件的含义,幼用户自己决定,这些位的值为1是表示事件发生了。
  • 任意任务或中断都可以读到这些位
  • 可以等待某一位成立,或者等待多位同时成立
  • configUSE_16_BIT_TICKS宏:如果该宏为1,则每个事件组包含8个可用的事件位;如果为0,则包含24个可用的事件位97。

事件标志组API函数

/*** @brief  动态分配内存创建事件组函数* @retval 返回成功创建的事件组的句柄,返回NULL表示因内存空间不足创建失败*/
EventGroupHandle_t xEventGroupCreate(void);
/*** @brief  将事件组某些位置位* @param  xEventGroup:要设置位的事件组* @param  uxBitsToSet:指定要在事件组中设置的一个或多个位的按位值,例如设置为0x09表示置位3 和位0* @retval 调用 xEventGroupSetBits()返回时事件组的值*/
EventBits_t xEventGroupSetBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet);/*** @brief  将事件组某些位清零* @param  xEventGroup:要在其中清除位的事件组* @param  uxBitsToSet:表示要在事件组中清除一个或多个位的按位值* @retval 返回清除指定位之前的事件组的值*/
EventBits_t xEventGroupClearBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear);/*** @brief  上述两个函数的中断安全版本* @param  pxHigherPriorityTaskWoken:用于通知应用程序编写者是否应该执行上下文切换* @retval 消息已发送到RTOS守护进程任务,则返回pdPASS,否则将返回pdFAIL*/
BaseType_t xEventGroupSetBitsFromISR(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,BaseType_t *pxHigherPriorityTaskWoken);BaseType_t xEventGroupClearBitsFromISR(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear);/*example1: 将事件组 EventGroup_Test 的位 1 和 3 置位*/
EventBits_t return_value;
return_value = xEventGroupSetBits(EventGroup_Test, 0x0A);/*example2: 将事件组 EventGroup_Test 的位 0 和 2 清零*/
EventBits_t return_value;
return_value = xEventGroupClearBits(EventGroup_Test, 0x05);
/*** @brief  读取事件组的当前值* @param  xEventGroup:正在查询的事件组* @retval 返回事件组当前的值*/
EventBits_t xEventGroupGetBits(EventGroupHandle_t xEventGroup);/*** @brief  上述函数的中断安全版本*/
EventBits_t xEventGroupGetBitsFromISR(EventGroupHandle_t xEventGroup);
/*** @brief  等待事件组中多个事件位表示的事件成立* @param  xEventGroup:所操作事件组的句柄* @param  uxBitsToWaitFor:所等待事件位的掩码,例如设置为0x05表示等待第0位和/或第2位* @param  xClearOnExit:pdTRUE表示事件组条件成立退出阻塞状态时将掩码指定的所有位清零;pdFALSE表示事件组条件成立退出阻塞状态时不将掩码指定的所有位清零* @param  xWaitForAllBits:pdTRUE表示等待掩码中所有事件位都置1,条件才算成立(逻辑与);pdFALSE表示等待掩码中所有事件位中一个置1,条件就成立(逻辑或)* @param  xTicksToWait:任务进入阻塞状态等待时间成立的超时节拍数* @retval 返回事件位等待完成设置或阻塞时间过期时的事件组值*/
EventBits_t xEventGroupWaitBits(const EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait); 

事件标志组API实验

void MyEventGroupSetFromISR(uint32_t event_bit)
{//参数event_bit=0 表示发生事件bit0//参数event_bit=1 表示发生事件bit1//参数event_bit=2 表示发生事件bit2//......printf("MyEventGroupSetFromISR Event Bit%d\r\n",event_bit);BaseType_t xHigherPriorityTaskWoken = pdFALSE;//在中断中调用xEventGroupSetBitsFromISR(myEventGroup,1<<event_bit,&xHigherPriorityTaskWoken);portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}#define EVENT_BIT0  (1<<0)
#define EVENT_BIT1  (1<<1)
#define EVENT_BIT2  (1<<2)
#define EVENT_BIT3  (1<<3)void StartMyTask1(void *argument)
{printf("StartMyTask1\r\n");uint32_t event_bits = 0;for(;;){event_bits= xEventGroupWaitBits(myEventGroup,EVENT_BIT0|EVENT_BIT1|EVENT_BIT2|EVENT_BIT3,pdTRUE,pdFALSE,portMAX_DELAY);printf("event_bits=%d\r\n",event_bits);if((event_bits & EVENT_BIT0) != 0){printf("EVENT_BIT0... \r\n");}else if((event_bits & EVENT_BIT1) != 0){printf("EVENT_BIT1... \r\n");}else if((event_bits & EVENT_BIT2) != 0){printf("EVENT_BIT2... \r\n");}vTaskDelay(pdMS_TO_TICKS(500));//500ms}
}
MyEventGroupSetFromISR Event Bit0
event_bits=1
EVENT_BIT0... 
MyEventGroupSetFromISR Event Bit1
event_bits=2
EVENT_BIT1... 
MyEventGroupSetFromISR Event Bit2
event_bits=4
EVENT_BIT2... 
MyEventGroupSetFromISR Event Bit3
event_bits=8
MyEventGroupSetFromISR Event Bit2
event_bits=4
EVENT_BIT2... 
MyEventGroupSetFromISR Event Bit1
event_bits=2
EVENT_BIT1... 
MyEventGroupSetFromISR Event Bit0
event_bits=1
EVENT_BIT0... 

上述实验中是某一比特的事件发生后都会解除阻塞。如果我们改为如下

		  event_bits= xEventGroupWaitBits(myEventGroup,EVENT_BIT0|EVENT_BIT1|EVENT_BIT2|EVENT_BIT3,pdTRUE,pdTRUE,portMAX_DELAY);

则表示,所有比特位事件都发生后才会解除阻塞。

MyEventGroupSetFromISR Event Bit0
MyEventGroupSetFromISR Event Bit1
MyEventGroupSetFromISR Event Bit2
MyEventGroupSetFromISR Event Bit3
event_bits=15
http://www.hkea.cn/news/604900/

相关文章:

  • 扁平式网站模板b2b网站推广优化
  • 做外贸网站网络营销咨询服务
  • 江门网站建设方案报价淘宝seo优化怎么做
  • 盘龙城做网站推广网站推广
  • 如何做电子书网站域名站长工具
  • 物联网平台有哪些排名优化外包公司
  • 秦皇岛汽车网站制作数字营销工具
  • 培训教育的网站怎么做东莞做网站的联系电话
  • 云南做网站的公司外贸谷歌优化
  • 网页设计学徒培训可试学巢湖seo推广
  • 让顾客心动的句子seo模拟点击软件源码
  • 设计类专业包括哪些kj6699的seo综合查询
  • 手机网站制作哪家好查关键词
  • 米拓企业网站管理系统电商培训机构排名前十
  • 做效果图有哪些网站seo点击排名
  • 网络营销推广网站收录seo推广排名平台有哪些
  • 产品经理如何看待网站开发广州软件系统开发seo推广
  • wordpress 忘记管理员如何做网站seo
  • app和网站哪个有优势淘宝关键词排名
  • wordpress该域名宁波网站seo公司
  • 建购物网站怎么建呀简单的网站建设
  • 江苏省建设教育协会网站首页百度知道合伙人答题兼职入口
  • 做优化的网站平台搭建
  • 做网站需要多久网络推广是什么专业
  • 厦门加盟网站建设线上推广营销
  • 定制网站案例seo搜索引擎优化薪酬
  • 网站制作成功后怎么使用浏览器观看b站视频的最佳设置
  • 一家专门做开网店的网站北京seo专员
  • 专业企业网站搭建服务头条权重查询
  • 去哪儿网站上做民宿需要材料免费的黄冈网站有哪些平台