定时器
1.STM32F40X系列总共最多有14个定时器
2.
3.
4.
5.向下计数为例
定时器定时溢出
1.定时脉冲
定时脉冲的来源很多,可以是内部时钟,也可以是外部定时信号,此处我们仅使用内部时钟作为定时脉冲的
来源
内部的定时脉冲来自APB总线时钟,此时钟经过分频后驱动定时器进行计数;分频器有两个,一个称为预分频
器(Prescaler,简称PSC),另一个是内部时钟分频器(Internal Clock Divider,简称CKD)。若记APB总线
时钟频率为F,则定时器时钟频率为 F'=F/(PSC+1)/CKD ,其计数器增加1用时 T=1/F'
2. 定时器装填
设定定时时长的时候,需要我们自己手动计算装填值,此装填值位于定时器的ARR寄存器中,于是总的定时时
长为 T1=(ARR+1)/F' ,根据此公式可以迅速计算装填值
3. 定时溢出
当定时器的计数器CNT的值等于ARR寄存器时(增计数方式),我们称为一个定时周期结束,此后,CNT计数
器清零,并且产生一个更新事件,该更新事件体现在SR寄存器的第0位,若发生更新事件,该位置位,可以手
动清除。
通过CUBE配置好以上过程。
if(__HAL_TIM_GET_FLAG(&htim2, TIM_FLAG_UPDATE) == 1)//如果定时器定时溢出
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_3);//两灯轮流亮
//Clear TIM Flag
__HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_UPDATE);//清除定时器值,重新开始计数
}
参考正点原子的学习资料