- [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 */
}
즐거운 시간되세요
'STM32' 카테고리의 다른 글
[touchGFX]프로젝트 디렉토리를 복사하여 사용하는 경우 수정할 내용 (0) | 2022.01.05 |
---|---|
[STM32] I2C 설정, 사용법 그리고 파형 (0) | 2022.01.04 |
[STM32CUBEIDE]한글 출력 (0) | 2021.12.01 |
[STM32CubeIDE]error: invalid storage class for function (0) | 2021.11.26 |
[STM32CubeMX]패키지(Package) 변경하기 (0) | 2021.11.24 |