OC(output compare)输出比较
输出比较通过比较cnt和ccr寄存器值的关系,来对输出电平进行置1,置0或反转的操作,用于输出一定频率和占空比的波形
每个高级定时器和通用定时器都拥有四个输出比较通道
PWM:脉冲宽度调制
在具有惯性的系统中,可以对一系列脉冲的宽度进行调制,来等效的获得所需的模拟参量,常应用于电机控速领域
如高电平为5v,低电平为0v的pwm波,当占空比为50%时,等效的模拟电压为2.5v,占空比为20%,等效的模拟电压为1v
这里的pulse详单与公式中的ccr,通过设置arr和pulse的值就可以起到修改占空比的作用
TIM_OCInitStructure.TIM.Pulse=;
此时需要将gpio口的输出模式定义为复用推挽输出模式,采用复用模式后,gpio的控制权将有输出控制寄存器转移到tim上,实现定时器对gpio口的控制
TIM_Setcompare1(TIM_typeDef* TIMx, uint16_t Compare1);
该函数可以用来单独更改通道一的ccr值
我们可以写一个函数来封装一下修改ccr值的函数比如我们要开启定时器2控制gpio扣的引脚,封装函数如下:
void PWM_Setcompare1(uint16_t Compare)
{
TIM_Setcompare1(TIM2,Compare);
}
主函数中代码如下:
一些初始化代码;
while(1)
{
for(i=1;i<=100;i++)
{
PWM_Setcompare1(i);
}
for(i=1;i<=100-i;i++)
{
PWM_Setcompare1(i);
}
}
端口重映射: