반응형
Inter Process Communication
여러 task 간에 소통을 하기 위해선 세마포어, 이벤트 플래그, 메시지 박스를 사용할 수 있다.
이 포스팅에선 여기서 이벤트 플래그를 다루려 한다.
Event Flag Group
이벤트 플래그는 비트마스킹을 통해 task로부터 이벤트를 수신한다.
임의의 task에서 event flag를 set하면, 다른 task에서 get하여 특정 이벤트를 수행한다.
EventGroupHandle_t xEventGroupCreate()
위 함수를 통해 이벤트 플래그를 생성할 수 있다.
EventBits_t xEventGroupSetBIts(
EventGroupHandle_t handle,
EventBits_t uxBitsToSet
)
위 함수를 통해 특정 비트를 설정하여 이벤트를 알리거나 신호를 보낼 수 있다. xEventGroup은 설정할 이벤트 그룹의 핸들이고, uxBitsToSet은 설정할 비트의 마스크이다. 이 인수에 지정된 비트들이 이벤트 그룹에서 설정된다. 그리고 비트가 설정되기 이전의 비트 값을 반환한다.
EventBits_t xEventGroupWaitBits(
EventGroupHandle_t xEventGroup,
EventBits_t uxBitsToWaitFor,
BaseType_t xClearOnExit,
BaseType_t xWaitForAllBits,
TickType_t xTicksToWait
)
위 함수는 특정 이벤트 비트가 설정될 때까지 기다리도록 태스크를 블록한다. 그리고 설정된 비트를 나타내는 EventBits_t 값을 반환한다. 반환된 값은 설정된 비트들을 포함한다.
uxBitsToWaitFor에 기다릴 비트의 마스크를 설정한다.
xClearOnExit를 pdTRUE로 설정하면 이벤트 비트가 설정된 후 반환되기 전에 비트를 클리어한다.
xWaitForAllBits를 pdTRUE로 설정하면 모든 비트가 설정될 때, pdFALSE라면 하나 이상의 비트가 설정될 때 반환된다.
xTicksToWait는 비트가 설정될 때까지 기다릴 시간(틱단위)로, 0이면 즉시 반환, portMAX_DELAY이면 무한정 대기한다.
void xEventGroupDelete(EventGroupHandle_t handle)
위 함수로 이벤트 플래그 그룹을 삭제할 수 있다.
반응형
'현생 > 임베디드' 카테고리의 다른 글
ARM 프로세서 - CORTEX M3 (0) | 2024.08.10 |
---|---|
FreeRTOS - Message Queue (0) | 2024.08.09 |
FreeRTOS - Interrupt (0) | 2024.08.07 |
FreeRTOS - 임계 영역 (0) | 2024.08.06 |
FreeRTOS - Naming Rule & Task (0) | 2024.08.05 |