FreeRTOS学习

事件组
configUSE_16_BIT_TICKS为1时可以存储8个时间位,为0时可以存储24个事件组
动态与静态创建时间标志组

EventGroupHandle_t xEventGroupCreate(void)
EventGroupHandle_t xEventGroupCreateStatic(StaticEventGroup_t *pxEventGroupBuffer)

清除事件位

//将事件标志组中指定事件位清零
EventBits_t xEventGroupClearBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear);
EventBits_t xEventGroupClearBitsFromISR(EventGroupHandle_t xEventGroup,
                                        const EventBits_t uxBitsToClear);

设置事件位

//设置指定的事件位为1
EventBits_t xEventGroupSetBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet);
EventBits_t xEventGroupSetBitsFromISR(EventGroupHandle_t xEventGroup,
                                      const EventBits_t uxBitsToSet,
                                      BaseType_t* pxHigherPriorityTaskWoken);
//pxHigherPriorityTaskWoken :标记退出次函数以后是否进行任务切换,当此值为pdTRUE的时候在退出中断服务函数之前一定要
//                           进行一次任务切换

获取事件标志组值

EventBits_t xEventGroupGetBits(EventGroupHandle_t xEventGroup)
EventBits_t xEventGroupGetBitsFromISR(EventGroupHandle_t xEventGroup)

等待指定的事件位
某个人可能需要与多个事件进行同步,那么这个任务就需要等待并判断多个事件位;

EventBits_t xEventGroupWaitBits(EventGroupHandle_t xEventGroup,
                                const EventBits_t uxBitsToWaitFor,//指定要等待的事件位,0x05=bit0和bit2
                                const BaseType_t xClearOnExit,//pdTRUE 退出函数前所有事件位清零
                                const BaseType_t xWaitForAllBIts,//pdTRUE所有事件位为或者阻塞时间到了,函数就会返回
                                const TickType_t xTicksToWait);

你可能感兴趣的:(freeRTOS,STM32,嵌入式c语言,freertos)