FreeRTOS之事件標志組


事件標志組用於任務間通信或同步

事件標志組和全局變量

  • 全局變量一般用在無RTOS的程序中,因此程序對全局變量的訪問是順序的,全局變量對於每一個訪問它的程序來說都是最新值
  • 事件標志組一般用在多任務系統中,多任務使用事件標志組可以防止訪問沖突。因為多任務相當於並行執行,訪問全局變量可能會出現同時訪問一個值的情況,會出現訪問沖突或變量不是最新值
  • 事件標志組在多任務中可以進行超時等待

事件標志組本質上是一個16位或32位的軟件狀態寄存器。16位的話使用低8位,32位的話使用低24位,每位用0或1表示事件標志。

事件標志組API 功能
EventGroupHandle_t xEventGroupCreate( void ) 創建事件標志組,返回句柄
EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) 設置標志位,返回事件標志組
BaseType_t xEventGroupSetBitsFromISR(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet,BaseType_t *pxHigherPriorityTaskWoken ) 設置標志位(中斷),返回狀態
EventBits_t xEventGroupWaitBits(EventGroupHandle_t xEventGroup,EventBits_t uxBitsToWaitFor,BaseType_t xClearOnExit,BaseType_t xWaitForAllBits,TickType_t xTicksToWait ) 等待事件標志位置位,返回事件標志組
/* 創建事件標志組 */
xCreatedEventGroup = xEventGroupCreate();
/* 設置事件標志組的 bit0 */
xEventGroupSetBits(xCreatedEventGroup, BIT_0);
/* 設置事件標志組的 bit1 */
xEventGroupSetBits(xCreatedEventGroup, BIT_1);
/*等待標志位置位*/
uxBits = xEventGroupWaitBits(xCreatedEventGroup, /* 事件標志組句柄 */
                             BIT_ALL, /* 等待 bit0 和 bit1 被設置 */
                             pdTRUE,/* 退出前 bit0 和 bit1 被清除,這里是 bit0 和 bit1 都被設置才表示“退出”*/
                             pdTRUE,/* 設置為pdTRUE表示等待bit1和bit0都被設置*/
                             xTicksToWait);/* 等待延遲時間 */


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM