[STM32]타이머 (General Timer TIM7) 사용하기

2021년 12월 31일 by 진아사랑해

    [STM32]타이머 (General Timer TIM7) 사용하기 목차
반응형

STM32F4XX의 경우 단순한 목적으로 사용할 수 있는 타이머가 Tim6, Tim7이 있다

TIM6는 FreeRTOS에서 기준 시스템 틱으로 사용함으로 Timer 7을 사용한다

 

CubeMX의 설정을 한다

 

TIM7은 84MHz인 APB1 Clock을 사용한다

 

내가 필요한 부분은 0.5초를 만드는 것임으로

84,000,000 (타이머에 입력되는 Clock )

-----------------------------------------------------

(840 - 1 (Prescaler)) * (50000 - 1(Counter Period)

로 계산하면 2Hz의 값이 나온다. 즉 0.5초 마다 인터럽트가 발생한다

 

인터럽트를 발생시키기 위해서는

이렇게 Enable에 클릭을 해준다

 

그리고 코드 생성을 실행한다

main(void)

{

    MX_TIM7_Init();
   /* USER CODE BEGIN 2 */
    HAL_TIM_Base_Start_IT(&htim7);  <- 이 구문이 있어야 TIM7이 인터럽트 방식으로 동작을 시작한다

    ....

}

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* USER CODE BEGIN Callback 0 */

  /* USER CODE END Callback 0 */
  if (htim->Instance == TIM6) {   <- FreeRTOS에서 사용하는 타이머
    HAL_IncTick();
  }
  /* USER CODE BEGIN Callback 1 */
  if (htim->Instance == TIM7) {    <- 추가적으로 설정한 타이머
    watch_up();            <- 타이머에서 처리해야 하는 함수 선언
  }
  /* USER CODE END Callback 1 */
}

 

즐거운 시간되세요

반응형