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

同时使用PWM两个中断问题

[复制链接]
Glenxu 提问时间:2023-2-4 23:11 / 未解决
感觉PWM中断用HAL_TIM_PWM_Start_IT(&htimx, TIM_CHANNEL_y);启动就可以了,
但事实上这个中断仅仅对应:void HAL_TIM_PWM_PulseFinishedCallback (TIM_HandleTypeDef *htim);
如果启用:void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)中断,
必须使用HAL_TIM_Base_Start_IT(&htimx );才能完成。

经3天反复试验,如果需要这两个中断,就必须同时启用:
HAL_TIM_Base_Start_IT(&htimx );
HAL_TIM_PWM_Start_IT(&htimx, TIM_CHANNEL_y);
这样下面的函数才能都有响应。
void HAL_TIM_PWM_PulseFinishedCallback (TIM_HandleTypeDef *htim)
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)
也就是说,这两个中断需要两个对应的启用函数。

收藏 评论1 发布时间:2023-2-4 23:11

举报

1个回答
xmshao 回答时间:2023-2-6 10:30:50
你的理解没有问题,虽然两个TIMER API函数都带IT,但启动的中断是不相同的。


HAL_TIM_Base_Start_IT(&htimx );==》这个 函数启动的是基于更新事件的中断;


HAL_TIM_PWM_Start_IT(&htimx, TIM_CHANNEL_y);==》这个函数启动的是基于比较事件的中断;



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