这个是 输出pwm 判断条件,比较cnt和arr的值,来判断当前是否输出有效电平
这个是判断pwm的输出条件排列模式,可以选pwm1或者pwm2模式,然后每个模式有递增计数还是递减计数,例如:根据设置的是pwm1模式的 递增计数,那么计数cnt<crrx时候,输出有效电平,但是有效电平还要根据极性也就是CCxP来判断,是高电平有效还是低电平有效 。
说白了就是 pwm先选模式,再选递增还是递减计数,然后还需要感觉输出极性也就是CCxP才能决定输出的是高电平有效还是低电平有效
这个图里面的评论就是我上面那个图 写的pwm输出条件选择逻辑
这个图是pwm输出实验配置步骤,用cubmax可以一键生成,但是步骤还是需要知道的
这个图 是pwm输出配置实验步骤的相关库函数所调用的寄存器 就是熟悉一下,如果出问题了,可以去看对应寄存器,但是我短时间还达不到这个看寄存器分析问题的水平
这个图是基础定时器的配置步骤所需要的库函数,与通用定时器的配置步骤做一个比较 ,其实两个步骤也差不多的
注意: 这个图很重要,以f1为例,定时器的时钟源频率都是72mhz,当psc等于71,arr等于499,那么得到pwm的周期是0.5ms(毫秒)也就是500微秒,注意 (周期是一次pwm反转,频率是一秒内pwm能反转多少次,2khz的频率那么一秒pwm反转2000次 因为0.5ms*2000等于1s)
所以如果不改变pwm的比较值,在人眼看来,灯就是一直亮的
当改变pwm的比较值的时候,这个时候其实是这样想的,因为pwm如果设置占空比是50%,那么高电平时间其实就是0.25毫秒,以远远大于这个时间的颜色去改变这个pwm的占空比,就相当于是在缓慢改变比较值了
注意(最后这个pwm做呼吸灯这个改变比较值这个事情,其实我感觉我理解的不一定很对,需要再想一下)