* 목표 : 타이머를 이용하여 1초 주기의 인터럽트가 발생하도록 하여 LED Toggle
1. RCC 설정
2. Clock Configuration 설정
- 데이터시트를 참고하면 TIM3은 APB1 프리스케일러를 통과한 클럭을 소스로 사용함을 알 수 있음
3. Parameter Settings
- 인터럽트 주기 설정 공식 [Hz] = Frequency / (Prescaler * Period)
ex) 108 * 10^6 / (108 * 1000) = 1000[Hz] => 주기 = 1[ms]
- auto-reload preload : Enable 설정 => 반복적인 인터럽트 발생하기 위해
* 인터럽트 발생 이후 함수 호출 순서
TIM3_IRQHandler() -> HAL_TIM_IRQHandler() -> HAL_TIM_PeriodElapsedCallback()
4. 타이머 관련 코드 작성
1) 타이머 시작 함수 호출 (main.c)
/* USER CODE BEGIN 2 */
if(HAL_TIM_Base_Start_IT(&htim3) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END 2 */
2) 1ms 주기의 인터럽트 루틴(콜백 함수) 작성
- 인터럽트 발생할 때마다 count 1씩 증가하여 1000 증가하면 LED 토글
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
gTimerCnt++;
if(gTimerCnt == 1000)
{
gTimerCnt = 0;
HAL_GPIO_TogglePin(GPIOK, GPIO_PIN_3);
}
}
/* USER CODE END 4 */
'STM32 > touchGFX_STM32' 카테고리의 다른 글
[stm32F746] 3. 외부인터럽트 + 타이머 (0) | 2020.09.01 |
---|---|
[stm32F746] 2. EXTI (외부인터럽트) (0) | 2020.08.31 |
[touchGFX] Font 추가 (0) | 2020.08.31 |
[touchGFX] UART Transmit (0) | 2020.08.28 |
touchGFX 입력 키패드(1) (0) | 2020.08.27 |