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

STM32G030PWM中断小坑

[复制链接]
flyingstar 提问时间:2025-2-14 15:02 / 未解决

硬件:STM32G030F6P6

软件环境:STM32CubeIDE

实现功能:RCR定数量PWM输出

正常配置硬件,TIM1_CHANNEL2,ONE_Pulse Mode

主程序主动开启时钟、中断: (过去一直这么用!!!)

HAL_TIM_Base_Start(&htim1); //这句有的说放在开启中断后,有的说在前,测试发现应该防止前面,否则输出脉冲数少了。

HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_2);

怎么都进不了下面的中断,但同样的程序,改成TIM3就可以

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)

做了各种排列组合,结果发现需要同时(!!!!!?????)启用下列函数,才能正确进入中服务(重点是以前从来没这么用过!!!)

__HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE);

HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_2);

也许这就是研发——从一个又一个的坑里趴出来,外人看上去以为你在走平路。

另外发现一个好用的功能,给大家分享以下:

固定个数的脉冲输出,可以采用PWM 的 ONE_Pulse Mode 方式,

通过:

TIM1->RCR = pulse 根据需要修改脉冲数量

TIM1->ARR = 1/f 修改频率

TIM1->CCR1 = du 修改脉宽 非常方便,也好记。

ST3.pngST1.pngST2.pngST4.png

收藏 评论1 发布时间:2025-2-14 15:02

举报

1个回答
qintian0303 回答时间:6 天前

会不会是定时器1和定时器0一般是高级定时器,需要这样呢

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版