前言
1、输出模式有很多,其中有上次讲到的pwm模式。输出比较模式里面有很多模式,这次用的就是翻转模式,在CCMR寄存器里,翻转翻转的只是参考电平,输出的实际电平还要与后面的具体高电平有效还是低电平有效配合使用
TIM_OCInitStructure.OCMode = TIM_OCMODE_TOGGLE;//输出比较模式的翻转模式,当CNT计数到CCR1(也就是PWM中设定脉宽的那个)时电平出现一次翻转,并可以配置产生相应的中断DMA等
#define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */
#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */
#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */
#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */
#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */
#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */
#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */
#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */
实验介绍
1:输出四路占空比为50%但是频率不同的函数。
2:在中断中不断修改CCR的值,通过不断的匹配翻转,匹配翻转来达到目的。和PWM输出的区别是PWM输出是CNT到ARR的时候为一个周期,而这个实验在CNT还没有到ARR的时候就可以通过改变CCR(捕获比较寄存器,每个通道都有一个)的值,实现一个ARR里面有多次翻转,实现一个复杂波形的输出。这个时候CNT的值是不断增加的,直到过了这个周期,即达到ARR(自动重载计数器)时,计数器才会清零,即重新开始。
3:四个通道用的都是同一个CNT
4:参考野火电机定时器章节</