打印

急问关于定时器的PWM输出停止后如何控制输出电平高低

[复制链接]
11822|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mousie|  楼主 | 2011-4-11 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用定时器实现PWM输出,在停止输出脉冲后,管脚上的输出电平时高时低,好像和脉冲的输出频率有关。想请问一下如何让管脚在不输出脉冲时始终维持高电平或者低电平状态啊?我将管脚定义为复用开漏输出,尝试在TIM_Cmd(TIM3, DISABLE)之后用GPIO_WriteBit写电平,好像不管用。
沙发
香水城| | 2011-4-11 15:16 | 只看该作者
2种办法:1)控制好停止输出脉冲的时间。2)停止输出脉冲后切换到强制输出模式。

这个问题以前讨论过,你可以搜索一下。

使用特权

评论回复
板凳
yybj| | 2011-4-11 18:13 | 只看该作者
很眼熟的问题,以前应该讨论过

使用特权

评论回复
地板
mousie|  楼主 | 2011-4-12 13:11 | 只看该作者
:L 能提供几个搜索关键词吗?实在是找不到啊?当然要是能提供链接就更好了哈

使用特权

评论回复
5
hhbl312288| | 2011-4-12 13:20 | 只看该作者
想赚积分 发帖能赚吗

使用特权

评论回复
6
mousie|  楼主 | 2011-4-12 14:43 | 只看该作者
本帖最后由 mousie 于 2011-4-12 15:45 编辑

:L 我还以为已经有人回答了呢:'(
想问下定时器的强制输出没有现成的库函数可用吗?我明白意思但是不太会用啊?

使用特权

评论回复
7
香水城| | 2011-4-12 17:15 | 只看该作者
8
airwill| | 2011-4-13 11:07 | 只看该作者
2种办法:1)控制好停止输出脉冲的时间。2)停止输出脉冲后切换到强制输出模式。

这个问题以前讨论过,你可以搜索一下。
香水城 发表于 2011-4-11 15:16


这里的说法欠妥的.
stm32 的 PWM 有个更强的 PWM 状态控制信号. 就是设置捕获/比较使能寄存器 CCER.
不要随意用 TIM_Cmd(TIMx, DISABLE)  开关定时器的时钟

使用特权

评论回复
9
mousie|  楼主 | 2011-4-15 10:11 | 只看该作者
8# airwill

有直接对应得库函数吗?还有为什么TIM_Cmd不能随意用呢?

使用特权

评论回复
10
zchong| | 2012-5-18 11:15 | 只看该作者
这里的说法欠妥的.
stm32 的 PWM 有个更强的 PWM 状态控制信号. 就是设置捕获/比较使能寄存器 CCER.
不要随意用 TIM_Cmd(TIMx, DISABLE)  开关定时器的时钟
airwill 发表于 2011-4-13 11:07


这个靠谱,每次关闭后都是低电平

使用特权

评论回复
11
EAMCU| | 2012-5-18 12:35 | 只看该作者
如果是使用TIM1或者TIM8,
可以使用void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)来开关PWM输出
只要设置好了了有效电平,空闲电平,
可以用上述命令有效开关

使用特权

评论回复
12
EAMCU| | 2012-5-18 12:38 | 只看该作者
实际上,经过试验,用于TIM2之类的普通TIM也一样可以,只不过固件库里说这个函数适用于TIM1, 8, 15, 16 or 17

使用特权

评论回复
13
无帝老三| | 2015-8-31 18:56 | 只看该作者
zchong 发表于 2012-5-18 11:15
这个靠谱,每次关闭后都是低电平

请教一下,怎么设置的?              TIM1->CCER |= TIM_CCER_CC1P;                       
这样后为什么还是高电平?
麻烦您了

使用特权

评论回复
14
zchong| | 2015-9-1 11:24 | 只看该作者
无帝老三 发表于 2015-8-31 18:56
请教一下,怎么设置的?              TIM1->CCER |= TIM_CCER_CC1P;                       
这样后为什么还是高电平?
麻烦您了 ...

TIM_CCxCmd这个函数看看

使用特权

评论回复
15
tangmix| | 2015-9-2 10:36 | 只看该作者
STM8 PWM寄存器设置里面就有控制停止的时候IO口是什么电平的,TIM2_CCER1 =0;  想必STM32应该也有的吧

使用特权

评论回复
16
350182617| | 2015-9-3 13:48 | 只看该作者
我的解决方法是赋值CCR寄存器,调整占空比,0%输出低电平,100%输出高电平,可以快速定位输出状态

使用特权

评论回复
17
稳稳の幸福| | 2016-7-15 17:22 | 只看该作者
停止后,配置端口为输出高电平

使用特权

评论回复
18
zhuomuniao110| | 2016-7-15 22:02 | 只看该作者
停止后立马调用IO功能的输出函数。

使用特权

评论回复
19
cy0919| | 2016-12-1 18:40 | 只看该作者
如果想简便,可以采用高级定时器,高级定时器不会出现这个问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

63

帖子

1

粉丝