赞
踩
目录
3.使能预装载寄存器:void TIM_OC2PreloadConfig
由之前的定时器中断实验知道,定时器内部有一个记录定时器当前值的寄存器CNT和一个记录定时器自动重装载值的寄存器ARR,而在PWM工作模式下,我们依然利用这两个定时器来记录时间,不同的是多引入一个寄存器CCRx,这个寄存器用于控制PWM输出波的有效电平长度、引入CCMRx寄存器来控制PWM模式、引入寄存器CCERx:CC1P位控制输出电平极性。
PWM模式可以控制当计数器的值小于CCRx寄存器设定的值时输出的是有效电平还是无效电平,
下面以PWM模式1为例:当计数器小于CCRx数值时,输出的为有效的电平,例如上图中,我们通过控制寄存器CCERx:CC1P位让有效电平为低电平,所以当计数器小于寄存器CCRx设定的数值时,输出的为有效的低电平。当计数器大于CCRx设定的值时,输出无效的高电平。
PWM实验的配置步骤如下:
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
这个函数用于初始化PWM模式下定时器输出的模式和相应参数的选择。它有两个参数,第一个是要初始化的定时器,第二个是选择定时器的输出模式的结构体指针:
- uint16_t TIM_OCMode;
-
- uint16_t TIM_OutputState;
-
- uint16_t TIM_OutputNState;
-
- uint16_t TIM_Pulse;
-
- uint16_t TIM_OCPolarity;
-
- uint16_t TIM_OCNPolarity;
-
- uint16_t TIM_OCIdleState;
-
- uint16_t TIM_OCNIdleState;
它有8个成员,而在我们PWM输出的实验中,我们只需要去配置它的4个成员:
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OCInitStructure.TIM_Pulse
第一个是TIM_OCInitStructure.TIM_OCMode,它是选择PWM模式,即控制CCMRx寄存器的结构体成员;
第二个是TIM_OCInitStructure.TIM_OutputState,它是选择是否使能通道的成员;
第三个是TIM_OCInitStructure.TIM_OCPolarity,它是配置CCERx寄存器,即控制有效电平的极性的成员;
第四个是TIM_OCInitStructure.TIM_Pulse,它是配置CCRx寄存器的数值,这个我们可以不使用,因为后面有函数可以配置它。
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)
这个函数有两个参数,第一个参数是要设置的定时器,第二个参数是新的比较值,即CCRx寄存器的配置函数;
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
这个函数用于使能预装载寄存器,即使能CCRx预装载寄存器的函数,即驱动CCRx寄存器工作的函数。它也有两个参数,第一个是定时器序号,第二个是定时器的预装载寄存器的使能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。