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

小白求问

[复制链接]
Okrain 提问时间:2024-2-28 17:22 / 已解决

3E`OJ$73G5@I0M`T807L.pngD95M~1G062IF2JZEKPN.png

大佬们,在通用定时器PWM输出实现呼吸灯的实验中,我在这个通道输出极性选择中选择高电平有效,LED0为啥会一直亮?按理说应该是输出低电平才会亮啊。

收藏 评论4 发布时间:2024-2-28 17:22

举报

4个回答
xmshao 回答时间:2024-2-29 09:50:06
现在问题的重点应该还不是极性选择问题,因为只要你输出适当占空比的PWM,LED就不该出现常亮或常灭。


所以你现在的重点是检查OCREF信号是否有合适的PWM输出,还是说它固定输出了高电平或低电平。


从你反馈的情况来看,它目前是固定输出了低电平。好好检查CCR值,PWM模式这些。


为了便于观察效果,可以将计数周期拉大点,即调整PSC和ARR的值,CCR值先取中间值。这里假定你使用单向计数模式。


然后左右调整CCR值应该可以看到LED的亮暗变化。
butterflyspring 回答时间:2024-2-28 17:36:08
这个CC1P是定时器输出的极性选择。
从图中也可以看出,选0 为同向 ocref, 选1, 为反向。
所以输出为低,LED点亮了。

STM32F4XX CC1P.PNG
Okrain 回答时间:2024-2-28 18:21:00

butterflyspring 发表于 2024-2-28 17:36
这个CC1P是定时器输出的极性选择。
从图中也可以看出,选0 为同向 ocref, 选1, 为反向。
所以输出为低,L ...

K5BLDWBJQRAM5P9BH4.png

大佬,我选的是TIM_OCPOLARITY_HIGH,结果LED0会常亮(一直亮)。只有设置为低电平有效才能实现呼吸灯。

butterflyspring 回答时间:2024-2-29 09:32:09
我看到图示中标注了由 OC1CE 位强制清零。

所以检查一下是不是使能了清零,导致OC1REF 被清零了。

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