打印
[STM32F1]

STM 之PWM中断小坑

[复制链接]
2683|63
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GlenX|  楼主 | 2023-2-4 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
感觉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)
也就是说,这两个中断需要两个对应的启用函数。

使用特权

评论回复
沙发
月亮一键变蓝| | 2023-2-28 06:07 | 只看该作者
那,在cubemx上如何配置呢?

使用特权

评论回复
板凳
将爱藏于深海| | 2023-2-28 08:01 | 只看该作者
两个同时启用也是正常的,cubemx的程序就是冗余太多嘛

使用特权

评论回复
地板
温室雏菊| | 2023-2-28 09:18 | 只看该作者
这好麻烦啊,和标准库一对比来说,真的操作起来就麻烦多了

使用特权

评论回复
5
风凉| | 2023-2-28 11:23 | 只看该作者
是的,之前我也遇到过这个问题了,属实需要两个都要启用才行

使用特权

评论回复
6
在曼谷的春| | 2023-2-28 13:02 | 只看该作者
这个是在cubemx上就能配置这俩函数启用吧?

使用特权

评论回复
7
tpgf| | 2023-3-7 16:50 | 只看该作者
在这两个函数的头文件定义中 是不是应该有这两个函数的详细说明啊

使用特权

评论回复
8
晓伍| | 2023-3-8 08:04 | 只看该作者
月亮一键变蓝 发表于 2023-2-28 06:07
那,在cubemx上如何配置呢?

在cube上就是初始化 至于具体的执行内容要自己写

使用特权

评论回复
9
八层楼| | 2023-3-8 08:21 | 只看该作者
月亮一键变蓝 发表于 2023-2-28 06:07
那,在cubemx上如何配置呢?

cube只负责基础的引脚时钟功能模块的配置 并不负责实现具体的动作

使用特权

评论回复
10
观海| | 2023-3-8 09:12 | 只看该作者
看着函数的名字 感觉就是必须要启动基础功能以及pwm功能才可以

使用特权

评论回复
11
guanjiaer| | 2023-3-8 09:27 | 只看该作者
将爱藏于深海 发表于 2023-2-28 08:01
两个同时启用也是正常的,cubemx的程序就是冗余太多嘛

这个和cube没啥关系吧 应该是寄存器的设置问题

使用特权

评论回复
12
keaibukelian| | 2023-3-8 09:51 | 只看该作者
感觉这个函数名有点误导用户啊  在哪里可以看到函数体里边的具体内容或者是中断向量的指向啊

使用特权

评论回复
13
GlenX|  楼主 | 2023-3-9 08:48 | 只看该作者
这和配置没有关系。
是楼上这个意思,主要是找不到必须怎么做的依据和说明,所以才分享给大家。
以免反复尝试,耽误时间。
甚至消磨高手的盛誉。

使用特权

评论回复
14
朝生| | 2023-3-9 13:49 | 只看该作者
因为HAL_TIM_PeriodElapsedCallback函数是中断回调的吧。

使用特权

评论回复
15
LLGTR| | 2023-3-9 13:50 | 只看该作者
HAL_TIM_PeriodElapsedCallback函数是什么时候会产生?

使用特权

评论回复
16
天天向善| | 2023-3-9 13:51 | 只看该作者
这个坑花了这么久的时间,真是不容易。

使用特权

评论回复
17
Undshing| | 2023-3-9 18:09 | 只看该作者
cube不会实现具体的动作

使用特权

评论回复
18
香水城| | 2023-3-9 18:56 | 只看该作者
HAL_TIM_PWM_Start_IT(&htimx, TIM_CHANNEL_y);
==》它开启的是比较事件中断。

HAL_TIM_Base_Start_IT(&htimx );才能完成。

==》它开启的是定时器更新中断。

所以 看你到底要启动哪个还是说都要启动。

使用特权

评论回复
19
zwll| | 2023-7-13 22:29 | 只看该作者
那,在cubemx上如何配置呢?

使用特权

评论回复
20
chuxh| | 2023-7-13 22:30 | 只看该作者
两个同时启用也是正常的

使用特权

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

本版积分规则

18

主题

599

帖子

2

粉丝