这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32G030PWM中断小坑

共3条 1/1 1 跳转至

STM32G030PWM中断小坑

菜鸟
2024-01-26 12:11:32     打赏

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

非常方便,也好记。




关键词: STM32G030     中断    

院士
2024-01-26 23:48:49     打赏
2楼

简单是从复杂与反复中走出来的

楼主真棒


高工
2024-01-30 09:06:45     打赏
3楼

谢谢分享


共3条 1/1 1 跳转至

回复

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