PWM

stm32f103ze 添加pwm 设备失败

发布于 2019-01-22 13:19:12
在按照教程添加PWM 时候,我是在 硬十的Ibox 板上进行添加,想要控制的效果是控制PE12 引脚 白灯 亮暗变化。PE12 对应的定时器输出引脚是:TIM1_CH3N.根据教程:首先使能 internal Clock 时钟,然后为 channelx 选项选择PWM Generation CHx, 最后配置所需要的引脚(或者使用默认引脚)18.png
然后修改kconfig 配置文件:
    menuconfig BSP_USING_PWM
bool "Enable pwm"
default n
select RT_USING_PWM
if BSP_USING_PWM
menuconfig BSP_USING_PWM1
bool "Enable timer1 output pwm"
default n
if BSP_USING_PWM1
config BSP_USING_PWM1_CH1
bool "Enable PWM1 channel1"
default n
config BSP_USING_PWM1_CH2
bool "Enable PWM1 channel2"
default n

config BSP_USING_PWM1_CH3
bool "Enable PWM1 channel3"
default n

config BSP_USING_PWM1_CH4
bool "Enable PWM1 channel4"
default n
endif
endif
然后构建工程,编译。
但是提示:PWM1_CONFIG is undefined.

19.png
查看pwm_config.h中确实没有定义,是不是就不能用PWM1呢?
20.png
然后试着拷贝PWM2的配置,改成PWM1,虽然最后编译可以通过,但是灯是没有反应的。例子用的是官方提供的例子,然后修改对应引脚。



查看更多

关注者
0
被浏览
1.5k
5 个回答
朝雨绫萧
朝雨绫萧 2019-01-22
需要修改drv_pwm.c里的get_channel函数,把宏转变成变量
我夏了夏天
我夏了夏天 认证专家 2019-01-22
按楼上的建议试一下吧
小住住
小住住 认证专家 2019-01-22
朝雨绫萧 发表于 2019-1-22 13:41
需要修改drv_pwm.c里的get_channel函数,把宏转变成变量


static void pwm_get_channel(void)
{
#ifdef BSP_USING_PWM1_CH3
stm32_pwm_obj[PWM1_INDEX].channel |= 1 << 2;
#endif
#ifdef BSP_USING_PWM2_CH1
stm32_pwm_obj[PWM2_INDEX].channel |= 1 << 0;
#endif

增加了BSP_USING_PWM1_CH3, 你意思把这个改一下?改成什么呢?
我夏了夏天
我夏了夏天 认证专家 2019-01-22
小住住 发表于 2019-1-22 13:56
增加了BSP_USING_PWM1_CH3, 你意思把这个改一下?改成什么呢?


应该是在初始化通道吧,先自己试下呗
朝雨绫萧
朝雨绫萧 2019-01-22
小住住 发表于 2019-1-22 13:56
增加了BSP_USING_PWM1_CH3, 你意思把这个改一下?改成什么呢?


是的,这么改没错,如果改完还是没有波形,你就要考虑下高级定时器和通用定时器的区别了,rtt提供的pwm驱动是基于通用定时器的

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览