RTOS를 사용할까 super loop 기반으로 갈까 고민을 많이 했는데 super loop기반 timer 기반 스케줄러를 사용하기로 결정했다.
우선 프로젝트에서 사용하는 시스템은 아래와 같고
RTOS를 사용하지 않은 이유는 거의 모든 동작이 이벤트 기반이기 때문이다 즉 지속적으로 CPU를 점유하는 작업이 거의 없는 프로젝트이기에 RTOS를 사용하지 않았다.
RTOS는 장점도 많지만 그만큼 단점도 있기에 타이머 기반 스케줄러 사용

시스템 클럭이 96mhz 1ms을 만들기 위해서
Prescaler = 96 -1
ARR 1000 -1
HAL_TIM_Base_Start_IT 를 시작하면 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 가 주기적으로 호출된다 이 때 내부에 플래그(카운터)를 업데이트하고 timerGetFlag_1ms 함수를 통해서 main loop에서 소비해주면 된다.