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

外贸公司网站建设费用 如何申请有做彩票网站平台的吗

外贸公司网站建设费用 如何申请,有做彩票网站平台的吗,wordpress特定目录指定模版,o2o平台有哪些国内文章目录目的基础说明相关函数使用演示总结目的 事件组是RTOS中相对常用的用于任务间交互的功能#xff0c;这篇文章将对相关内容做个介绍。 本文代码测试环境见前面的文章#xff1a;《FreeRTOS入门#xff08;01#xff09;#xff1a;基础说明与使用演示》 基础说明… 文章目录目的基础说明相关函数使用演示总结目的 事件组是RTOS中相对常用的用于任务间交互的功能这篇文章将对相关内容做个介绍。 本文代码测试环境见前面的文章《FreeRTOS入门01基础说明与使用演示》 基础说明 事件组EventGroup和单片机硬件的事件或者中断有点像每个事件组对象就是一个变量寄存器。如果 configUSE_16_BIT_TICKS 值为 0 这就是一个32位的变量为 1 就是一个16位的变量。 事件组对象的高8位供FreeRTOS内部使用剩余位供用户使用。每一个位bit表示一个事件发送通常该位值为 0 表示未发生事件值为 1 表示发生了事件。 事件组事件在设置的时候可以设置某一位也可以同时设置某些位。等待事件的任务可以等待某一位有效也可以等到某些位同时有效。事件被设置后会唤醒所有符合条件的任务可以用作广播功能。被唤醒的事件可以选择是否清除事件标志位。 相关函数 // 创建并返回事件组句柄 EventGroupHandle_t xEventGroupCreate( void )// 删除事件组 // 在被删除的事件组上阻塞的任务将被取消阻塞并且报告事件组值为0 void vEventGroupDelete( EventGroupHandle_t xEventGroup )// 获取事件组中某个或某些位如果不可用则阻塞 // uxBitsToWaitFor表示要等待的标志位可以设置多个位 // xClearOnExit为pdTRUE时会在事件发生后清除所等待的标志位为pdFALSE则不清除 // xWaitForAllBits为pdTRUE时需要等所有等待的标志位都设置后才会返回为pdFALSE时任意一位设置均会返回 EventBits_t xEventGroupWaitBits( const EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait )// 设置标志位 EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) // 清除标志位 EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear )// 事件组的设置与清除在中断中使用的版本在中断中设置与清除事件组不会立即进行而是会延时到后面的FreeRTOS守护进程中执行所以可能需要设置下面才可使用 // INCLUDE_xEventGroupSetBitFromISR, configUSE_TIMERS, INCLUDE_xTimerPendFunctionCall, configUSE_TRACE_FACILITY BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear )// 获取当前事件组状态 EventBits_t xEventGroupGetBits( EventGroupHandle_t xEventGroup ) EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup )// 同步设置写和等待合并的功能 // uxBitsToSet为要写的位uxBitsToWaitFor为要等待的位 EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,const EventBits_t uxBitsToWaitFor,TickType_t xTicksToWait );使用演示 下面是个基础使用的演示 #include debug.h #include FreeRTOS.h // 引入头文件 #include task.h // 引入头文件 #include event_groups.h // 引入头文件EventGroupHandle_t xEventGroup; // 事件组句柄void task1(void *pvParameters) {while(1) {xEventGroupSetBits(xEventGroup, 0b0011); // bit1 bit0 写1vTaskDelete(NULL);} }void task2(void *pvParameters) {while(1) {vTaskDelay(500);xEventGroupSetBits(xEventGroup, 0b0100); // bit2 写1vTaskDelete(NULL);} }void task3(void *pvParameters) {while(1) {// 当 bit0 为1时触发响应后不清除标志位EventBits_t uxBits xEventGroupWaitBits(xEventGroup, 0b0001, pdFALSE, pdFALSE, portMAX_DELAY);printf(t3-%d\r\n, uxBits); // 打印事件触发时的标志位vTaskDelay(300);} }void task4(void *pvParameters) {while(1) {// 当 bit3 bit2 均为0时触发响应后清除标志位EventBits_t uxBits xEventGroupWaitBits(xEventGroup, 0b0110, pdTRUE, pdTRUE, portMAX_DELAY);printf(t4-%d\r\n, uxBits); // 打印事件触发时的标志位printf(t4-%d\r\n, xEventGroupGetBits(xEventGroup)); // 打印当前标志位xEventGroupClearBits(xEventGroup, 0x0001); // 清除标志位printf(t4-%d\r\n, xEventGroupGetBits(xEventGroup)); // 打印当前标志位} }int main(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);xEventGroup xEventGroupCreate(); //xTaskCreate(task1, task1, 256, NULL, 5, NULL);xTaskCreate(task2, task2, 256, NULL, 5, NULL);xTaskCreate(task3, task3, 256, NULL, 5, NULL);xTaskCreate(task4, task4, 256, NULL, 5, NULL);vTaskStartScheduler(); // 任务调度任务将在这里根据情况开始运行程序将在这里无序循环while(1) {} // 程序不会运行到这里 }// 时间 任务 xEventGroup // tick 0000 0b0000 // tick 0000 task1 0b0011 // tick 0001 task3 0b0011 // 打印输出 // tick 0301 task3 0b0011 // 打印输出 // tick 0500 task2 0b0111 // tick 0501 task4 0b0111 // 打印输出 // tick 0501 task4 0b0001 // 打印输出 // tick 0501 task4 0b0000 // 打印输出下面是个同步方式演示 #include debug.h #include FreeRTOS.h // 引入头文件 #include task.h // 引入头文件 #include event_groups.h // 引入头文件EventGroupHandle_t xEventGroup; // 事件组句柄void task1(void *pvParameters) {while(1) {printf(t1s1-%d\r\n, xEventGroupGetBits(xEventGroup)); // 打印事件触发时的标志位EventBits_t uxBits xEventGroupSync(xEventGroup, 0b0001, 0b0011, portMAX_DELAY); // 设置0b0001等待0b0011printf(t1s2-%d\r\n, uxBits); // 打印事件触发时的标志位vTaskDelete(NULL);} }void task2(void *pvParameters) {while(1) {vTaskDelay(500);printf(t2s1-%d\r\n, xEventGroupGetBits(xEventGroup)); // 打印事件触发时的标志位EventBits_t uxBits xEventGroupSync(xEventGroup, 0b0010, 0b0011, portMAX_DELAY); // 设置0b0010等待0b0011printf(t2s2-%d\r\n, uxBits); // 打印事件触发时的标志位vTaskDelete(NULL);} }int main(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);xEventGroup xEventGroupCreate(); //xTaskCreate(task1, task1, 256, NULL, 5, NULL);xTaskCreate(task2, task2, 256, NULL, 5, NULL);vTaskStartScheduler(); // 任务调度任务将在这里根据情况开始运行程序将在这里无序循环while(1) {} // 程序不会运行到这里 }总结 就像本文基础说明中介绍的那样事件组和单片机硬件的事件或者中断有点像理解了这点的话事件组使用上其实并不复杂的。
http://www.sczhlp.com/news/213248/

相关文章:

  • 建设进出口外贸网站郴州建设工程信息网站
  • 软件编程毕业设计代做网站2022房产政策最新消息
  • 黄冈公司网站建设平台景区网站建设策划方案
  • 做网站运营需要学什么条件武进网站建设效果
  • ui设计比较成功的网站页面不是搜索网站的是
  • 海南网站建设服务学校网站建设工作
  • 做素描的网站广州网站建设大公司排名
  • 浙江建设网一官方网站给实体店老板做的网站
  • 凡诺网站下载网站优化目标
  • 东丽区网站建设公司友情链接对网站的作用
  • 定制一个高端网站中铁建设集团有限公司是国企还是央企
  • 如何开发自己公司的网站做研学的企业网站
  • 专门做销售培训的网站深圳市宝安区松岗街道
  • 我想自己做的知道网站wordpress 定向次数过多
  • 房地产开发公司网站建设方案模板网站建设版块分类
  • 北京网站建设小程序开发做我男朋友的网站
  • 网站分析步骤wordpress加水印插件
  • 吉林网站建设制作网站出现的问题吗
  • 虚拟主机建立网站中国十大购物网站排行榜
  • 誉铭摄影网站建设好网站外链有哪些方式
  • 数字营销网站主页优化山西网络营销
  • 哪个女装网站做的好typecho2wordpress
  • 做视频网站适合用什么服务器易企秀 旗下 网站建设
  • 厦门网站优化公司平台网站建设价格
  • 1 分析seo做的不好的网站花都网站开发公司
  • 旅游做攻略网站好一个专门做网站建设的公司
  • 麻阳住房和城乡建设局网站南京建网站找哪家好
  • 网站开发平台 eclipse西安网站建设有那些公司好
  • 刷赞网站推广ks腾讯微信小程序公众号
  • 做单位网站网页设计计划书怎么写