估计来到这里的小伙伴都应该和我差不多,刚开始把rtt移植到stm32上,在用env配置的时候多少会遇到一些问题,我也是不会自己瞎搞搞出来了(哈哈哈,没办法,太菜了),所以希望你们更轻松点。
好了我们进入正题。
在开始之前需要 :
1、env配置好 env配置教程
2、示例代码下载好
代码链接
3、开发板
4、STM32CubeMX (直接搜索官网就可以了)
准备好后就可以开始了
这里我以f429为例,进入f429的bsp后进入env
输入menuconfig命令
按如下操作添加示例例程 按照路径一步步确认
这里我们选择pwm示例,选择后退出保存就可以了。
然后我们会发现我们文件夹里会多出一个文件,这就是我们刚刚添加的更新包
我们进入工程之后会发现env会给我们自己添加这个示例文件
如果没有添加的话自己手动添加也可以
修改使用的PWM通道
打开示例文件如果发现上面的io口或者通道并不是我们想要的(我以正点原子pb1为输出为例),不是自己想要的话自己改就可以了。
使能PWM通道
改完之后关闭文件,进入rt-thread\bsp\stm32\stm32f429-atk-apollo(自己bsp工程的文件夹)这个文件进入env,
输入menuconfig命令,进入
勾选使能pwm驱动
选中需要使用的 PWM 通道后保存退出,使用 scons --target=mdk5 生成 mdk5 工程,打开工程进行编译并下载程序,就可以看到pwm可以输出了。
如果发现没有自己选择的pwm通道的不要慌,需要自己配置使能,步骤如下
初始化 PWM 通道引脚 (这一步的目的是使能相应的通道引脚)
进入 rt-thread\bsp\stm32l475-atk-pandora\board\CubeMX_Config 目录,双击打开 STM32L475VE.ioc 文件初始化 PWM 通道对应的引脚,这里以 PWM3 通道 4 为例,如下图所示
配置好以上5步,tim上面的!可以忽略,点击 GENERATE CODE
按钮生成代码,RT-Thread 只使用了 STM32CubeMX 生成的 stm32fxx_hal_msp.c
文件和 stm32fxx_hal_conf.h
文件,
检查生成的 PWM 代码
如下所示:
配置 Kconfig 文件 (目的是添加使能选项到menuconfig)
进入 rt-thread\bsp\stm32l475-atk-pandora\board 目录,自己手动添加 Kconfig 选项
保存后进入env后输入menuconfig命令,
通过ENV工具使能相应通道
是不是很神奇,选项上已经有自己选择的通道了,这是因为 Kconfig按照一定的格式来书写,menuconfig程序可以识别这种格式,然后从中提取
出有效信息组成menuconfig中的配置项。用户配置相关配置项后会在rtconfig.h中生
成对应的宏。在menuconfig界面下的界面,取决于Kconfig文件的内容。Kconfig语言内容将决定menuconfig界面。再次使能自己选择的pwm通道驱动就好了
退出后保存,使用 scons --target=mdk5
命令生成 mdk5 工程,打开工程并编译,如果工程提示 PWMn_CONFIG
未定义。 可以在 stm32/libraries/HAL_Drivers/config/f4/pwm_config.h
中进行定义,如下图所示:
定义后再重复使能生成一下mdk5工程编译后就配置完成了,基本和官网步骤大同小异。需要注意的是正点原子f429 pwm3通道4可以用灯显示现象,但pb1是推挽复用,官方代码是这样的
把红色筐里的隐掉就可以输出了。
示例代码不懂的可以去官网看一下手册官网链接,
配置pwm的主要步骤就是:
查找 PWM 设备获取设备句柄。
设置 PWM 周期和脉冲宽度。
使能 PWM 设备。
while 循环里每 50 毫秒修改一次脉冲宽度。
将 PWM通道对应引脚和 LED 对应引脚相连,可以看到 LED 不停的由暗变到亮,然后又从亮变到暗。
有错误欢迎改正,有问题同样欢迎骚扰。