查看: 3715|回复: 0

[求助] freeRTOS事件组学习

[复制链接]

该用户从未签到

7

主题

15

帖子

0

新手上路

Rank: 1

积分
43
最后登录
2018-4-10
发表于 2016-8-12 17:27:45 | 显示全部楼层 |阅读模式
像其他RTOS一样,freeRTOS同样有对事件标志位的创建和处理,在中断中可以通过事件组传递信息给其他的任务,那么如何创建事件组呢?
要使用创建Event的API,首先必须配置,且包含event的头文件和源文件在工程中,

主要使用EventGroupHandle_txEventGroupCreate( void ),源码如下显示:
freeRTOS事件组学习.jpg
使用用例可以参照下述代码
  1. Example usage:
  2.     /* Declare a variable to hold thecreated event group. */
  3.     EventGroupHandle_t xCreatedEventGroup;

  4.     /* Attempt to create the event group. */
  5.     xCreatedEventGroup = xEventGroupCreate();

  6.     /* Was the event group createdsuccessfully? */
  7.     if( xCreatedEventGroup == NULL )
  8.     {
  9.         /* The event group was not createdbecause there was insufficient
  10.         FreeRTOS heap available. */
  11.     }
  12.     else
  13.     {
  14.         /* The event group was created. */
  15.     }
复制代码


事件的删除使用void vEventGroupDelete( EventGroupHandle_t xEventGroup );API函数。
置事件位使用EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
                                 const EventBits_t uxBitsToSet );

BaseType_t xEventGroupSetBitsFromISR(
                          EventGroupHandle_t xEventGroup,
                          const EventBits_t uxBitsToSet,
                          BaseType_t *pxHigherPriorityTaskWoken );
还有事件清标志位API,获取位状态API,事件同步API等函数供用户调用和在工程中使用,从源码注释和API文档介绍可以很容易的上手事件组的应用。更多有关使用freeRTOS事件组的问题可以参阅官方文档或网站。具体在我们的工程应用中,比如可以在串口接收中断使用事件组。还有很多在我们工程中可以使用事件组的地方,希望大家在自己的实际应用中多多体验,学会事件组的使用。

嵌入式程序猿



我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-7 16:26 , Processed in 0.076016 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表