这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【转载】PWM中断之坑:STM32G030F6P6--from三叶

共2条 1/1 1 跳转至

【转载】PWM中断之坑:STM32G030F6P6--from三叶

工程师
2024-02-20 00:39:39     打赏

硬件: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  修改脉宽

来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。


专家
2024-02-20 08:15:18     打赏
2楼

看一下什么情况


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]