system clock 을 사용한 Real Time Delay 함수를 사용는 방법에 대하여 설명한다.
Keil uVision5 에서 제공하는 Stm32f4xx_hal.h
라이브러리에 아래와 같이 HAL_Delay
함수를 제공한다.
문제점) Delay 함수 내부의 HAL_GetTick
함수의 반환 값이 계속 0으로 읽혀 Delay 함수가 제대로 동작되지 않았다.
해결방법은 Startup Component 를 선택하면 생성되는 Startup_stm32f407xx.s
파일 내용중 Systick_Handler
함수를 main
함수 내부에 생성하여 인터럽트를 처리해주면 된다.
Systick_Handler
핸들 내부에는 Stm32f4xx_hal.h
라이브러리에서 제공되는 HAL_IncTick
함수를 콜하여 Tick 을 발생시킨다.
아래와 같이 main
함수와 Systick_Handler
함수를 구현하면 LED를 1초마다 ON/OFF 시키는 동작을 할 수 있다.
동작결과
[STM32F103VCT6] LED on & off/Delay (0) | 2016.09.21 |
---|---|
STM32F407VET6 UART (RS-232) (0) | 2016.09.12 |
STM32F407VET6 GPIO 동작 테스트 (0) | 2016.09.07 |
keil uVision5 환경설정 (0) | 2016.09.06 |
miniJLINK V2.0 Spec (0) | 2016.09.02 |