你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

F407 PWM功能,GPIO引脚空闲时电平与配置不一致

[复制链接]
水木鱼1984 提问时间:2024-8-23 09:26 / 未解决

配置GPIO口为PWM输出,配置空闲状态下为低电平,即停止PWM输出时为低电平,但实际测试时,停止PWM输出,引脚输出电平却是高电平。

实际输出与配置不一致,这是为什么呢?有什么解决办法?

image.png

image.png

收藏 评论4 发布时间:2024-8-23 09:26

举报

4个回答
butterflyspring 回答时间:2024-8-23 09:56:14
所谓空闲状态,是指的timer 还在工作。  而HAL_TIM_PWM_Stop()最终停止了定时器,所有配置的空闲状态就不工作了。 详情可以参考手册。
Stm32f407 timer1 ossi.PNG Stm23f407 timer pwm stop.PNG

xmshao 回答时间:2024-8-23 11:17:02
STM32 TIMER应用里面,所谓空闲电平是个特定概念,一般指高级定时器停止比较输出时的状态,具体体现下MOE为0时,空闲态是相对运行态而言的。


空闲态的电平由OIS/OISn寄存器控制位决定,但空闲电平不对同时对应OC/OCn的有效状态电平。


你现在的操作是直接关闭PWM输出,实质就是不想做PWM输出,对互补通道的输出使能位清零里。此时,


管脚的输出状态取决于GPIO电路,你可以配置上拉或下拉来满足你此刻的需求。
Glenxu 回答时间:4 天前

遇到过很多次。

一般需要确认你的PWM脉冲发完的时刻,如果不知道则需要借助中断。

做法是在发完脉冲后,立即执行一个对应的PWM_STOP,否则CPU会等到一个奇怪的时间才后可能回“零”,这个可能去解决于你的PWM模式以及初始定义2部分设定。

另外这个STOP执行早了,脉冲数不够,执行晚了,输出就有很大的尾巴。

xmshao 回答时间:3 天前

Glenxu 发表于 2024-8-28 10:38
遇到过很多次。</p>
<p>一般需要确认你的PWM脉冲发完的时刻,如果不知道则需要借助中断。

[md]对于非互补输出,有个比较简单有效的办法就是直接修改CCR的值,让CCR=0或比ARR还大,具体看你最后需要什么样的电平。

如果是互补输出,建议结合MOE=0和空闲电平的配置来实现。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版