본문 바로가기

STM32/touchGFX_STM32

[stm32F746] 1. 타이머 만들기

728x90

* 목표 : 타이머를 이용하여 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 */

 

 

728x90

'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