2025/02 2

STM32 RTOS 알아보기 6편(Mutex)

안녕하세요. 오늘은 세마포어와 뮤텍스에 대해 알아보겠습니다.(xSemaphoreCreateMutex,xSemaphoreTake,xSemaphoreGive)세마포어와 뮤텍스는 여러 태스크가 공유 자원에 안전하게 접근하도록 동기화하기 위해서 사용합니다.이 글에서는 세마포어와 뮤텍스를 알기전에 알아야 할 지식을 알아보고 뮤텍스에대해 알아보겠습니다.예를들어 아래의 코드에서 global_i는 TASK1과 TASK2가 동시에 접근하는 공유자원입니다.이런경우 임계구역(Critical Section)이 발생하고, 레이스컨디션(Race Condition)문제가 발생할 수 있습니다.void task(void *pvParameters);int global_i=0;void myTask(){  xTaskCreate(task, ..

STM32/STM32_RTOS 2025.02.16

STM32 RTOS 알아보기 5편(portYIELD_FROM_ISR)

안녕하세요. 오늘은 RTOS에서 사용하는 portYIELD_FROM_ISR에 대해 알아보겠습니다.제가 업로드했던 글 기준으로  3편에서 portYIELD_FROM_ISR 함수를  사용했었습니다.portYIELD_FROM_ISR 는 ISR종료 후 즉시 태스크 전환이 필요한 경우 Context Switching을 수행하게 해줍니다.port : FreeRTOS가 다양한 하드웨어에서 동작할 수 있도록 CPU별 맞춤 구현을 제공하는 하드웨어 적응 계층입니다.YIELD : (양보하다) 현재 실행중인 태스크가 CPU실행을 포기하고 다른 태스크에게 실행을 양보합니다.FROM_ISR : 해당기능(매크로 또는 함수)이 ISR에서 호출될 수 있음을 의미합니다.portYIELD_FROM_ISR의 코드를 보겠습니다. 매크로로 ..

STM32/STM32_RTOS 2025.02.01