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放那下面是想要坑死谁?是个正常人都会觉得那个是用来配置全部通道的吧,唉。

相关推荐
ahccqw1 分钟前
电机入门学习(电机认识,分类)
嵌入式硬件
jianqiang.xue7 小时前
系统服务层设计:沉淀通用能力,让业务层只专注业务
stm32·单片机·嵌入式硬件·mcu·物联网·esp32
无垠的广袤9 小时前
【RA-Eco-RA2T1开发板】介绍、环境搭建、工程测试
单片机·嵌入式硬件·串口通信·uart·开发环境·blink
画面无声9 小时前
STM32的SPI通信原理与练习记录
c语言·stm32·单片机·嵌入式硬件·学习
weixin_4568083810 小时前
【沁恒蓝牙开发】IAP升级流程
c语言·单片机·嵌入式硬件
czhaii11 小时前
RTL8019AS、555,DS3231等芯片的跳线方式和引脚定义
嵌入式硬件
czhaii13 小时前
基本电器元件 电阻 resistance R 电容 capacitance C 电感 inductance L
嵌入式硬件
万亿少女的梦16813 小时前
基于STM32、RFID与OneNET的开放性实验室电源节点设计
stm32·物联网·onenet·rfid·esp8266
1560820721914 小时前
飞腾D2000接入外部时钟HYM8563芯片调试
驱动开发·嵌入式硬件·mcu
殷忆枫15 小时前
基于STM32+OV2640+ESP8266的无线图像采集系统设计与实现
stm32·单片机·嵌入式硬件