[FreeRTOS] EventGroup (이벤트 그룹)
Event Group을 사용하면 Task간 정보를 주고 받을 수 있다.
API
xEventGroupCreate : 이벤트 그룹 생성
#include "event_groups.h"
EventGroupHandle_t xCreatedEventGroup;
void TaskMain(void)
{
xCreatedEventGroup = xEventGroupCreate();
// Event Group 할당 실패에 대한 예외처리
if(xCreatedEventGroup == NULL)
{
}
}
xEventGroupSetBits : 이벤트 전달
EventBits_t xEventGroupSetBits(const EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToSet);
// # Parameters
// xEventGroup : Bit가 설정 될 이벤트 그룹
// uxBitsToSet : 이벤트 그룹에서 설정 할 비트를 나타내는 비트 값
// 예를들어, 0x0A는 1010(b) 이므로 비트3과 비트1을 설정 함
xEventGroupWaitBits : 이벤트 대기
#include "event_groups.h"
EventBits_t xEventGroupWaitBits( const EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToWaitFor,
const BaseType_t xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait );
// # Parameters
// xEventGroup : 이벤트 그룹 핸들
// uxBitsToWaitFor : 이벤트 대기 비트 패턴
// xClearOnExit : 이벤트 값을 읽고나서 Clear 시킬 지 여부
// pdFALSE(0) -> Clear 시키지 않음
// pdTRUE(1) -> Clear 시킴 ( 주로 사용 )
// xWaitForAllBits : 이벤트 대기 조건 방법
// pdFALSE(0) -> OR (|) 조건
// pdTRUE(1) -> AND (&) 조건
// xTicksToWait : 대기 시간, Timeout 되면 이벤트를 기다리지 않고 block에서 깨어나게 됨.