Blackpill STM32F411CEU6 基于libopencm3配置TIM3输出PWM无输出问题
问题排查结果
以下是你代码中存在的错误和遗漏配置项:
- GPIO模式配置错误(核心问题)
你当前将PB0/PB4/PB5的模式设为了GPIO_MODE_OUTPUT(普通推挽输出模式),要让引脚连接到定时器外设实现PWM输出,必须将GPIO模式设置为复用功能模式,修改对应代码即可:gpio_mode_setup(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO0 | GPIO4 | GPIO5); - 定时器通道与引脚对应关系不匹配
STM32F411系列TIM3通道和你使用的引脚对应关系如下:- PB4 → TIM3_CH1
- PB5 → TIM3_CH2
- PB0 → TIM3_CH3
你当前代码仅开启了TIM3_CH1的PWM输出配置,只有PB4引脚会有PWM输出。若你测试的是PB0或PB5,需要对应打开TIM_OC2、TIM_OC3的输出使能与OC模式配置,取消相关注释即可。
- 可选校验项
确认你的APB1总线时钟频率是否为50MHz,你当前预分频参数是按照50MHz总线时钟计算的,若总线时钟频率不符只会导致PWM频率偏差,不会出现完全无输出的情况。若修改上述配置后仍无输出,可额外显式配置输出极性:timer_set_oc_polarity_high(TIM3, TIM_OC1);
内容的提问来源于stack exchange,提问作者IAMCB
相关产品推荐
相关产品推荐

