定时器简介
1.STM32的定时器功能十分强大,有 TIME1和 TIME8等高级定时器,也有 TIME2~TIME5等通用定时器,还有 TIME6和TIME7等基本定时器。 2.STM3的通用 TIMx (TIM2、 TIM3、 TIM4和 TIM5)定时器功能包括: 1)16位向上、向下、向上 /向下自动装载计数器( TIMx_CNT)。 2)16位可编程 (可以实时修改 )预分频器 (TIMx_PSC),计数器时钟频率的分频系数为 1~65535之间的任意数值。
-
4个独立通道( TIMx_CH1~4),这些通道可以用来作为
A.输入捕获 B.输出比较 C PWM生成 (边缘或中间对齐模式 ) D.单脉冲模式输出
定时器时间的计算
若使用TIM1,则选择APB2的时钟,将TIM1配成72M ![](
若需要配置66us(T总)
1.配置一个T的时间:72M / (PSC+1) = 1M(先设定为1M,求出PSC的值)
2.T总=(ARR+1)T ,若ARR大于65535,则72M / (PSC+1) = 0.5M,重新计算。
ARR为自动重装值,对于表格中的Counter Period, 量纲M=e6 ,注意单位
![](
配置中断和定时器
配置定时器参数(此处设定时间为1s,TIM1时钟为72M)
1.
![](
配置中断触发
-然后生成代码
代码编写
1.开启定时器
/* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim1);//定时器开启 /* *USER CODE END 2 */
2.编写中断回调函数
/* USER CODE BEGIN 4 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==&htim1) { HAL_GPIO_TogglePin((GPIO_TypeDef *)GPIOA, (uint16_t) GPIO_PIN_8);//一秒进入中断,电平翻转一次 } } //htim是一个指向TIM_HandleTypeDef结构体的指针 /* USER CODE END 4 */