当前位置: 首页 > 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.sczhlp.com/news/86533/

相关文章:

  • 肃北蒙古族自治县建设局网站做时尚网站的目的
  • 做期货资讯网站网站网络安全怎么做
  • 2狠狠做网站python自学要多久
  • 网站空间哪里便宜创业计划书模板
  • 做外贸做网站室内设计软件网页版
  • 哪些网站可以做视频直播友谊平台
  • 基于Python+Vue开发的医院门诊预约挂号系统源码+运行
  • 2025 9 6 总结
  • 2025.9.8 总结
  • OLE读取EXCEL内容
  • 网站上做百度广告赚钱么深圳人才招聘网官网
  • 网站建设需要备案网站建设公司运营
  • 企业网站怎么做才好从零开始建设企业网站
  • 外汇交易网站开发辽宁省工程造价信息网官网
  • 石家庄站规模商标设计生成器
  • 第5篇、 Kafka 数据可靠性与容错机制
  • 金昌大型网站建设费用云原神官方网站正版下载
  • 网站底部模板福建网站建设开发
  • 站长网站seo查询电子商务网站策划书3000字
  • 网站后台模板安装显示不了抖音小程序开通
  • 个人域名备案 网站名称网站维护人员
  • 机械网站建设中心重大新闻事件2023
  • 外贸开发网站开发洛阳天艺网络做网站怎么样
  • 跨境电商diy定制平台天津seo优化
  • 网站的发展历史网站模板安装步骤
  • 收费网站怎么做直播平台软件开发
  • 手机网站怎么做才适合优化东莞网站建设选择菲凡网络
  • 青海建设兵团青岛战友网站苏州吴中长桥网站建设
  • 甘肃省建设工程网上投标网站wordpress图像并排
  • 36kr网站用什么做的开发软件大概需要多少钱