STM32的通用定时器
相比于基本定时器而言,通用定时器增加了输入捕获功能以及输出比较功能,并且通用定时器具有独立通道,就可以把GPIO引脚连接到某个通道,利用通道进行输入信号的检测以及脉冲信号的输出。
STM32F407一共提供10个通用定时器(TIM2-TIM5、TIM9-TIM14),TIM2和TIM5是32bit定时器,其他的定时器都是16bit定时器。TIM2-TIM5的计数方式有三种可以选择,分别为递增计数、递减计数、递增/递减计数。

递增计数:计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。
递减计数:计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。
中心对齐:计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)- 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从 0 开始重新计数。
对于通用定时器TIM2~TIM5,都挂载在APB1外设总线下,定时器的频率为84MHZ,如下图

定时功能:基本上使用流程和基本定时器一致,只不过通用定时器的计数方式更灵活而已。
输入捕获:可以把定时器的某个通道连接到GPIO引脚上,然后从外部输入脉冲信号,经过通道的滤波以及边沿检测之后,可以记录某个电平信号的脉冲宽度以及周期。
输出比较:可以把定时器的某个通道连接到GPIO引脚上,主动从引脚输出一个固定的脉冲,原理很简单,其实就是计数器(TIM_CNT)如果超过比较寄存器中的值,就可以输出一个电平信号(高电平或者低电平)。

对于TIM9-TIM14而言,也可以进行定时功能,同样也具有输入捕获以及输出比较功能,但是只能采用向上计数的方式,并且相比于TIM2-TIM5,只有2个独立通道。

脉宽调制
PWM(Pulse Width Modulation)称为脉冲宽度调制,原理是根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定。
脉冲宽度调制能利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
PWM技术的关键参数有两个,一个是频率,一个是占空比。频率指的是利用STM32的定时器通道输出脉冲的次数。占空比是指在一个脉冲周期中通电时间相对于总时间所占的比例,也可以简单理解为一个周期内高电平持续时间相对于总时间所占的比例(%)。

要实现精确的占空比控制,该电路必须有恒定的工作频率做保证。其实频率固定,也就是工作电路周期固定。因为占空比控制的电路接通率是建立在恒定工作周期上的,如果电子控制模块控制电路的周期不能保证恒定,那么所谓的占空比控制是毫无意义的。
PWM技术一般用在工业控制领域(控制电机的转速、控制舵机的角度........),所以必须掌握。

可以知道,PF9引脚是连接在定时器TIM14的通道CH1上,所以就必须配置TIM14和CH1!

PWM技术的原理其实很简单,就是利用STM32定时器中的某个通道的输出比较功能来输出周期性的脉冲信号,然后调节脉冲的宽度(调节占空比)达到控制外设的目的。

如果某个IO口没有连接到定时器的通道上,那就无法使用定时器的通道来调节PWM脉冲信号,那此时可以选择使用延时来模拟脉冲信号,通过控制高电平和低电平的延时时间的长短来实现PWM调节。

作者:bbzhu04@gmail.com ,多有不妥之处,望批评指正
本文原创,欢迎转载;转载请在文章显著位置标明原文链接: href="https://www.cnblogs.com/zhubb/p/23392411"
保留所有权限,未经许可禁止篡改、商用发布。

浙公网安备 33010602011771号