|
| 목록으로 가기.. |
|
STM32F767과 FreeRTOS를 이용해 설계할때 Time base Source는? |
김종호
|
삭제하기
|
|
OS를 사용한다는건 그만큼 스케쥴관리를 덜 신경써도 되고 우선순위에 따라서 태스크 관리도 용이하기때문이지만 초기 설정이 잘못되면 디버깅이 어려울 수 있으니 이런 타이머 설정은 신경써야 함
STM32F767모델은 타이머 6,7을 rtos base timer로 사용면 좋은데 이유는
1. 하드웨어 자원의 낭비 방지 STM32의 타이머는 기능에 따라 크게 세 종류로 나뉨.
고급 타이머 (TIM1, TIM8): 모터 제어를 위한 복잡한 PWM 출력, 데드타임 삽입 등 막강한 기능
범용 타이머 (TIM2~5, TIM9~14): 일반적인 PWM 출력이나 센서의 신호 길이 측정(Input Capture) 등에 널리 쓰임
기본 타이머 (TIM6, TIM7): 외부 핀과 연결되는 기능(PWM 등)이 아예 없음. 오로지 내부적으로 특정 시간마다 인터럽트를 발생시키거나 DAC(디지털-아날로그 변환기)를 깨우는 용도로만 만들어진 아주 단순한 타이머.
HAL 라이브러리의 타임베이스(HAL_Delay용)는 단순히 1ms마다 숫자만 1씩 올려주면 됨. 이 단순 노동에 고급/범용 타이머를 배정하면, 나중에 모터를 돌리거나 LED 밝기를 조절할 때 써야 할 중요한 핀과 타이머를 하나 날리게 되기때문에 외부 출력 기능이 없는 TIM6나 TIM7에게 이 역할을 맡기는 것이 가장 효율적.
2. 충돌 가능성 최소화 TIM6와 TIM7은 다른 복잡한 외부 입출력 핀과 엮여있지 않기 때문에, 다른 핀 설정(GPIO)이나 통신(SPI, I2C 등) 설정과 충돌할 일이 원천적으로 차단되어 순수하게 내부 시간만 재는 용도로 독립적으로 굴러가므로 가장 안정적.
적용 방법: STM32CubeIDE(또는 CubeMX)의 설정 화면 좌측 메뉴에서 System Core ➔ SYS ➔ Timebase Source 항목을 찾아 기본값인 SysTick 대신 TIM6로 선택해 주시면 됨.
|
| 
|