STM32的基本定时器的功能比较简单,主要就是提供一个定时器的功能。
本文讨论基本定时器是不是可以实现PWM的功能呢?
其实基本定时器里面是没有PWM功能的,也没有对应的输出引脚。但通过对基本定时器一些寄存器的操作,是可以模拟PWM功能的,只是这个PWM是有软件参与,所以时效性不如硬件上自带的PWM来的高。不过可以通过这个实验来更加深刻理解基本定时器的工作原理。
所谓PWM就是脉宽调制,也就是可以根据需要调整波形的周期和占空比。
为了实现这个功能,需要充分利用自动重新加载寄存器(TIMx_ARR)的预加载功能,也就是通过设置控制寄存器(TIMx_CR1)中的自动重新加载预加载启用位(ARPE=1)来采用预加载方式。
预加载功能的实现过程:就是将(TIMx_ARR)的值加载到影子寄存器后,定时器的计数值(TIMx_CNT)和影子寄存器比较,在此期间可以将新的待加载的值存入(TIMx_ARR),新存入的值不影响当前影子寄存器里面的值,当(TIMx_CNT)计数值达到影子寄存器存储的数值时,会产生更新中断,且自动将刚才存储在(TIMx_ARR)里面待加载的数据加载到影子寄存器,以及将(TIMx_CNT)清0,并重新计数和影子寄存器里面的数据做比较。在此期间可以再次将新的待加载的值存入(TIMx_ARR),如此循环往复。
任务:设计一个波形周期为10ms,高电平时间为2.5ms,低电平时间为7.5ms,通过PA0输出此波形。
使用基本定时器TIM6实现此功能的具体实施步骤如下:
1、 使能TIM6的时钟。
2、 TIM6_CR1.ARPE = 1,TIM6_CR1.URS = 0,TIM6_CR1.UDIS = 0 :允许TIM6_ARR预加载,允许更新,且更新请求的事件源为:定时器溢出,置位TIM6_EGR.UG,通过从模式控制器产生更新。
3、 设置定时器输入时钟的分频系数。
4、 输出高电平:PA0=1
5、

最低0.47元/天 解锁文章
1982

被折叠的 条评论
为什么被折叠?



