实验目标:使用STM32定时器来产生PWM输出,使用TIM1通道1产生PWM来控制DS0亮度
什么是PWM?脉冲宽度调制,Pulse Width Modulation的缩写,简称脉宽调制,利用微处理器数字输出来对模拟电路进行控制。
假设定时器工作在向上计数PWM模式,CNT小于CRRx时输出0,CNT>=CCRx时输出1,可以得到上面这样的示意图。改变CCRx的值就可以改变PWM输出的占空比,改变ARR的值就可以改变PWM输出的频率,这就是PWM输出原理。
32除了6、7其他的定时器都可以产生PWM,1,8可以产生多达7路同时PWM输出。所以我们的32能够同时产生30路PWM输出。
要让TIM1产生PWM输出,除了上一章的4个寄存器我们还需要另外4个:
1、捕获比较模式寄存器 TIMx_CCMR1/2
2、捕获比较使能寄存器 TIMx_CCER
3、捕获比较寄存器TIMx_CCR1~4
4、刹车和死区寄存器TIMx_BDTR
第一个:捕获比较模式寄存器
一共有两个,TIMx_CCMR1控制1和2,~2控制CH3和4.
模式设置为OCxM,三部分组成,总共可以组成7种模式。PWM模式使用110/111
第二个:捕获比较使能寄存器
想要PWM从IO口输出,这个位必须设置为1。
第三个:捕获/比较寄存器
对应4个通道CH1~4,这4个寄存器都差不多。输出模式下寄存器的值与CNT的值进行比较,根据比较结果产生相应的动作,通过更改这个寄存器的值就可以控制PWM的输出脉宽了。我们使用TIM1的通道1来实现脉宽控制DS0的亮度。
通用定时器配置上面三个就可以了,如果是高级定时器还需要配置:刹车和