STM32를 사용할 때 가장 만족하는 기능 중 하나가 Systick 이다.
Systick는 ARM Cortex-M에 지원하는 24bit Timer이다. 이녀석이 편리한 것은
CubeMX에서 내가 원하는 HCLK를 설정하면 알아서 Systick은 1ms 을 보장하는 세팅이 되어 있다.
그래서 일반 Timer와 달리, 이녀석을 통해 스케줄링을 설계한다.
아래의 글은 STM32F429ZI 에서 systick 사용하기 위한 예제이다.
Systick동작을 사용하기 위해서는 다음과 같은 코드 작성이 필요하다.
Core폴더-Src폴더-stm32f4xx_it.c 에 있는 void SysTick_Handler (void) 를 찾는다.
주석 /* USER CODE BEGIN SysTick_IRQn 1 */ 아래에 HAL_SYSTICK_IRQHandler(); 를 작성한다.
(예전에는 그 부분이 자동코드생성되어 있었는데, 2019년 언젠가 갑자기 초기생성이 되지 않게 수정되었다. 그래서
반드시 이부분에 위 핸들러를 직접 적어줘야 동작한다. 이 부분을 놓쳐서 엄청 고생한 기억이 있다)
위 과정을 통해 우리는 HAL_SYSTICK_Callback 을 사용할 수 있게 된다.
이 함수는 1ms마다 인터럽트가 발생되어, 내가 원하는 스케줄링을 이 안에 만들 수 있다.
동작 검사를 위해 간단히 100ms마다 LED가 깜빡이게 작성해본다.
위 코드를 컴파일하면 LED가 100ms마다 깜빡이는 것을 확인할 수 있다.
'STM32 > HAL library' 카테고리의 다른 글
I2C 통신을 이용한 DAC 제어 (0) | 2021.01.14 |
---|---|
DMA를 이용한 UART 통신 (0) | 2020.12.30 |