rt-thread 下,配置 stm32 的 pwm

cubeMX 里面配置的时候,一定要注意,Clock Source 记得选一下,默认是 disable; ChannelX 选 PWM Generation CHX

一个定时器只能产生一个频率的 pwm,可以产生多个通道 pwm 信号,不同信道可以占空比不同但频率必须相同,否则会被后面启用的 pwm 覆盖

步骤

修改 board/Kconfig,添加 pwm 相关部分,以下为参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
menuconfig BSP_USING_PWM
bool "enable pwm"
default n
select RT_USING_PWM
if BSP_USING_PWM
menuconfig BSP_USING_PWM2
bool "enable timer2 output pwm"
default n
if BSP_USING_PWM2
config BSP_USING_PWM2_CH4
bool "enable pwm2 channel4"
default n
endif
endif

如果启用的 pwm 不自带,需要手工修改,修改libraries/HAL_Drivers/config/f4/pwm_config.h

1
2
3
4
5
6
7
8
9
10
#ifdef BSP_USING_PWM2
#ifndef PWM2_CONFIG
#define PWM2_CONFIG \
{ \
.tim_handle.Instance = TIM2, \
.name = "pwm2", \
.channel = 0 \
}
#endif
#endif
1
2
3
scons --menuconfig 启用 pwm
stm32XXxx_hal_conf.h 需要启用 HAL_TIM_MODULE_ENABLED
开发板的时钟一定要设置正确,否则会出现正确的周期和占空比,但是电机转的结果错误