CubeMX配置stm32定时器中断
一、使用CubeMX对STM32进行基础的配置 |
1、选择需要使用的定时器
选择TIM2和TIM3示例,
注意: TIM2和其它定时器选择时钟的方法不同,TIM3等定时器是勾选Clock Source
下面的Internal Clock
2、配置定时器
定时频率=频率/((预分频器的值+1)(自动重装器的值+1))
我使用的是72MHZ的频率,计时时间设置为1s,则ARR=9999,PSC=7199
(不是必须这个数)((720010000)/72000000=1s)
3、使能定时器
记住要使能所要用的所有定时器(我的是TIM2,TIM3)
CubeMX对STM32的配置就算结束了,可以生成代码了
二、使用keil 5进一步学习 |
1、在stm32f1xx_it.c里面找到HAL_TIM_IRQHandler()
函数
在这个函数中找到回调函数void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
2、在main.c中重写回调函数
例如:
/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
}
if(htim->Instance == TIM3)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}
}
/* USER CODE END 0 */
*定时器产生中断,翻转PC13和PB8的电平*
到现在还没有结束,还需要打开定时器中断开关
3、打开定时器中断
在Hal_tim.c
中找到HAL_TIM_Base_Start_IT()
在主函数中打开定时器中断
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_Base_Start_IT(&htim3);
/* USER CODE END 2 */
到此就算全部结束了