原理介绍
32单片机外接了一个8M的晶振,经过9倍的倍频后,PLL锁相环输出72Mhz的频率。这即系统的主频。
定时器中 TIM3_Init(u16 arr,u16 psc)这个初试函数中,arr是自动重装载值,psc是可编程预分频器。(他们共同设置什么时候该溢出)
比如arr = 899, psc = 0;
就表示没有分频,此时定时器的时钟频率仍为72MHz,表示每个周期定时器经过900个脉冲,周期 = 1/72 us *900
PWM 的频率就是 72000 000/900 = 8M
当我们设置pwm模式2,极性为高时
则
pwm输出为这样的模式,由于我们想制作,呼吸灯,可以通过不断改变ccr的值,来改变占空比。从而调整LED灯的亮度。
流程展示
ps:小细节
- TIM_ClockDivision的作用就是在未分频之前根据要求建立新的分频器,确定定时器,确定一定的延时时间,在此时间内完成一定预期的功能,一般不太用,所以无论是定义图二中的哪个值对原本定时器的频率都毫无影响
TIM_TimeBaseStructure.TIM_ClockDivision=0;这个语句的意思是不分频,换句话说频率不变。
有关pwm模式2
这两种pwm模式就是输出电平的极性相反
如同上图画的那样,占空比的有效部分是由
极性和pwm模式共同决定的。
3. 配置后,紧接着初始化函数
结构体一定要放在函数的最前面
代码问题
- 首先注意每一行代码之间的联系和逻辑
比如 if这里dir =0;
那么后面的pwmled (crr(21Q