RTOS

FreeRTOS 프로젝트 6단계

gigax 2026. 4. 4. 23:22

이번 글에서는 FreeRTOS 구성에 대해 살펴 보겠습니다.

 

stm32 mcu에 적용된  FreeRTOS는 stm32 mcu  시스템 클록을 받아서 동작 합니다.

systick 타이머가 정상적으로 동작되는것을 확인하기 위해서는 정확한 타이밍 계산을 위한 systemcoreclock이 올바르게 업데이트 가 되어 있는지 확인이 필요 합니다.

 

systemcoreclock 업데이트 값을 제대로 확인하기 위해서 다음의 파일을 추가해줍니다.

\stm32_rtos_project\Software\stm32cubef4-v1-28-0\STM32Cube_FW_F4_V1.28.0\Projects\STM32F410xx-Nucleo\Examples\RCC\RCC_ClockConfig\Src 
위 경로에 있는 system_stm32f4xx.c 파일을 프로젝트 Src 폴더에 추가 합니다.

현재 프로젝트에서 사용중인 보드에 회로에는 외부 클록으로 25MHz를 사용하고 있습니다.

추가 했던 system_stm32f4xx,c 파일에 

이 부분을 25MHz로 변경 했습니다.

위 그림은 FreeRTOSConfig.h 파일에 있는 RTOS 설정과 관련된 내용 입니다.

#define configCPU_CLOCK_HZ (SystemCoreClock)   
stm32에 SystemCoreClock 값을 RTOS 클록 값으로 사용합니다.

#define configTICK_RATE_HZ ((TickType_t)1000)

Tick 속도는 1KHz를 사용합니다.

#define configMINIMAL_STACK_SIZE ((uint16_t)128)

현재 프로젝트에 최소 스택 사이즈는 128 입니다.

#define configTOTAL_HEAP_SIZE ((size_t)(15 * 1024))

Heap 사이즈 크기는 설정 그래도 둡니다.

#define configUSE_MUTEXES 1

통신 버퍼를 사용하기 위해서는 Mutex 사용은 필수 입니다.

#define configGENERATE_RUN_TIME_STATS 1

configGENERATE_RUN_TIME_STATS 값은 0 에서 1로 변경 합니다. 이 기능을 사용하면 각 태스크에 stack 사용량을 모니터링 할수 있습니다.

 

가장 낮은 인터럽트 순위는 16진수로 0xf 로 설정되어 있고 이것은 가장 낮은 우선 순위 입니다. FreeRTOS에서 우선 순위는 일반적인 stm32 인터럽트 우선 순우와 반대로 생각해야 합니다.

FreeRTOS는 값이 클수록 우선 순위는 낮아 집니다.

 FreeRTOS 에서 사용하는 핸들러를 확인할수 있습니다.

 

'RTOS' 카테고리의 다른 글

FreeRTOS 프로젝트 7단계  (0) 2026.04.05
FreeRTOS 프로젝트 5단계  (0) 2026.03.30
FreeRTOS 프로젝트 4단계  (0) 2026.03.29
FreeRTOS 프로젝트 3 단계  (0) 2026.03.25
FreeRTOS 프로젝트 과정(2)  (0) 2026.03.14