分享

关于STM32的PWM快速打开/关闭,以及空闲时管脚电平设置

 guitarhua 2015-07-14
现在使用TIM3来产生PWM波形,并通过软件打开/关闭PWM以实现调制波形。做法是:
打开:TIM_Cmd(TIM3, ENABLE);
关闭:TIM_Cmd(TIM3, DISABLE);
跟踪到TIM_Cmd之后,发现直接操作寄存器就可以了:TIMx->CR1 |= CR1_CEN_Set;
这个问题算解决了。
但是PWM关闭后,管脚电平是高电平,这不是我需要的……需要的是低电平。尝试关闭PWM后,加一行GPIO_ResetBits(GPIOC, GPIO_Pin_6);以把管脚设置为低电平。测试代码:
while(1)
{
       ENABLE_PWM();
        Delay_ms(10);//延时若干ms
        DISABLE_PWM();
        GPIO_ResetBits(GPIOC, GPIO_Pin_6);
        Delay_ms(10);//延时若干ms
}
用示波器观测了一下,发现PWM关闭期间管脚电平有时是高电平,有时是低电平……查找手册也没找到相关说法。用TIM_OC1Init()把TIM3重新配置一下倒是可以解决,但是速度太慢了。不知香水城有什么好办法没有?





“PWM关闭期间管脚电平有时是高电平,有时是低电平”,这是因为你关闭输出的时机不对。如果希望关闭PWM时,引脚为低,则应在PWM输出低时关闭;反之则在PWM输出高时关闭。

如果你使用的是PWM输出模式,每个周期都会有一个更新中断,可以在更新中断关闭PWM输出。

另一个办法是在关闭PWM输出时,设置寄存器转换至强制输出模式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多