STM32 HAL库多路PWM没有输出踩坑记录

之前只弄过单路的,这次想用4路PWM,CUBE里面一顿配置,生成,然后套用之前的代码:

cpp 复制代码
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

这算是开启第一路了,心想后面无非就复制几条,改下通道的事了,无意中点了下TIM_CHANNEL_1,进头文件看看:

cpp 复制代码
/** @defgroup TIM_Channel TIM Channel
  * @{
  */
#define TIM_CHANNEL_1                      0x00000000U                          /*!< Capture/compare channel 1 identifier      */
#define TIM_CHANNEL_2                      0x00000004U                          /*!< Capture/compare channel 2 identifier      */
#define TIM_CHANNEL_3                      0x00000008U                          /*!< Capture/compare channel 3 identifier      */
#define TIM_CHANNEL_4                      0x0000000CU                          /*!< Capture/compare channel 4 identifier      */
#define TIM_CHANNEL_ALL                    0x0000003CU                          /*!< Global Capture/compare channel identifier  */
/**
  * @}
  */

看到TIM_CHANNEL_ALL时,眼前一亮,连续开启1、2、3、4怎么都显得不够优雅,于是把代码改成了:

cpp 复制代码
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_ALL);

这一改,看似天衣无缝,却没有想到灾难性的一下午就降临了,管脚没有输出,改管脚输出的上下拉模式,改时钟,改PWM设置里的各种setting,后来一度怀疑这个芯片的TIM3是不是有问题?

无奈之下,去掉所有PWM,针对某一路管脚,改用GPIO切换状态,发现正常,换了一个定时器13。

cpp 复制代码
 HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_1);

正常。

cpp 复制代码
HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_ALL);

没有。

这时候心里一阵阴霾。

4路PWM全都配置上,然后:

cpp 复制代码
		  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);		  
		  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
		  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
		  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);

赶紧用示波器测量......

我只能说,ST,你把TIM_CHANNEL_ALL放那下面是想要坑死谁?是个正常人都会觉得那个是用来配置全部通道的吧,唉。

相关推荐
d111111111d10 分钟前
STM32外设学习--PWR电源控制
笔记·stm32·单片机·嵌入式硬件·学习
MounRiver_Studio16 分钟前
RISC-V IDE MRS2使用笔记(二): 编译后Memory分析
ide·笔记·单片机·嵌入式·risc-v
小柯博客1 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(三)
stm32·嵌入式硬件·开源·嵌入式·yocto·st·stm32mp2
傲世(C/C++,Linux)1 小时前
Linux系统编程——UDP广播
linux·单片机·udp
就是蠢啊1 小时前
51单片机——I2C-EEPROM 实验(一)
单片机·嵌入式硬件·51单片机
阿容1234561 小时前
stm32两轮平衡车-01
stm32·单片机·嵌入式硬件
up向上up2 小时前
基于STM32单片机智能红外遥控跟随小车设计
stm32·单片机·嵌入式硬件
达不溜的日记2 小时前
UDS诊断-31服务
服务器·stm32·单片机·网络协议·网络安全·信息与通信·信号处理
云山工作室2 小时前
基于单片机的 220v车载逆变电源的设计与制作(论文+图纸)
stm32·单片机·嵌入式硬件·毕业设计·毕设
小柯博客2 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(四)
stm32·单片机·嵌入式硬件·开源·嵌入式·yocto·stm32mp2