请选择 进入手机版 | 继续访问电脑版

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

STM32F103 PWM ONE PULSE 功能问题

[复制链接]
Glenxu 提问时间:2023-1-16 20:22 / 已解决

硬件:STM32F103C8T6,TIM4_CH4 PWM输出,阻塞方式工作!

配置PWM ONE PULSE 功能,脉宽设定为5 mS,高电平输出,采用HAL_TIM_PWM_Start()在主程序启动:

结果能产生5mS脉冲,但在ARR时间后,输出持续为高,如果采用HAL_TIM_PWM_Stop()提前终止,则脉冲不能输出,

如果在ARR时间后HAL_TIM_PWM_Stop(),则总会输出一个高电平,然后才Stop,也就是会输出2个脉冲,

这与:PWM One Pulse Mode 功能矛盾!!!???

有人用过这个功能吗?

不得已,只好采用HAL_TIM_PWM_Start_IT()然后在HAL_TIM_PeriodElapsedCallback()中再Stop,

才能实现PWM One Pulse输出。

收藏 评论5 发布时间:2023-1-16 20:22

举报

5个回答
xmshao 最优答案 回答时间:2023-1-17 14:45:25
其实你也实现了你的需求,只是没有使用TIMER的单脉冲模式。
如果你想使用TIMER的硬件单脉冲模式,计数器的停止就不用你管了,硬件会自动停止。


你现在的问题是 停止输出后收尾电平问题。这跟你的配置有关,涉及到计数模式、PWM模式和极性
选择。以单向向上计数模式为例,若采用PWM1模式,就选择极性低有效;若采用PWM2模式,就选择
极性高有效。 这会手边不方便测试,万一我说错了的话,你可以自行调整下。


可以肯定的是,基于TIMER硬件单脉冲模式,可以非常方便地输出我们需要的单个或几个脉冲并符合我们
需求的收尾电平。
butterflyspring 回答时间:2023-1-17 14:37:49
这有个代码,参考一下吧。 PA8 输出,PA9上升沿触发。

One pulse mode.7z

下载

5.51 MB, 下载次数: 2

Glenxu 回答时间:2023-1-17 15:04:43
不是不会用!只是这种用法有问题!

Glenxu 回答时间:2023-1-17 15:28:20
xmshao 发表于 2023-1-17 14:45
其实你也实现了你的需求,只是没有使用TIMER的单脉冲模式。
如果你想使用TIMER的硬件单脉冲模式,计数器的 ...

感谢你的耐心帮助,我在换个模式试试。
Glenxu 回答时间:2023-1-17 22:45:34
"若采用PWM1模式,就选择极性低有效",非常正确!
//        __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4,5000);   //脉宽5mS

        HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4);
        HAL_Delay(10);                                                                        //不能少于9mS,否则输出被切掉了!!!
        HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_4);
        HAL_Delay(100);
这是我做到5mS脉宽的输出,但必须使用STOP,否则下次无法使用了

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