PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的
脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来
代替所需要波形的设备。
一、配置TIM的相关GPIO,选择时钟源
1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行定时器的配置,我们
以TIM8通道1为例,注意这里仍然是只配置IO,其他参数不予更改。配置完成后点击CREATE CODE。
1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。
1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要
调用该函数进行时钟配置。
二、修改Kconfig文件,增加menuconfig菜单中的PWM选项
三、添加PWMn_CONFIG定义
四、添加PWM软件包
打开Env工具,使用menuconfig配置工程,路径为:RT-Thread online packages--->miscellaneous
packages---> samples : kernel and components samples---> a peripheral_samples package for
rt-thread--->pwm devcie。
再在Env中输入命令:pkgs --update运行,出现Operation competed successfully更新成功。
我们会在文件夹中看到packages文件夹。
在Env中输入命令:scons --target=mdk5生成工程,我们会发现在工程中添加了pwm_led_sample.c文件。
我们对main.c中先将LED屏蔽掉,再对pwm_led_sample.c中做修改,我们点击保存退出(此时编译会出错,因为我
们还没配置结束)。
五、使能PWM通道
通过Env工具使能,选项是已经有个自己选择的通道,因为Kconfig按照一定的格式,menuconfig可以识别出Kconfig
的书写的格式,所以选项中已经有个自己选择的通道。
再次输入:scons --target=mdk5生成工程。
六、实验现象
打开工程进行编译并下载程序,在终端输入list_devcie命令,可以看到PWM8设备已经成功添加了,如图所示:
在终端输入help命令看到pwm_led_sample命令已经成功导出:
输入pwm_led_sample命令,即可运行PWM测试程序,此时红色LED不停的由暗变亮,然后再由亮变暗。
来源:oschina
链接:https://my.oschina.net/u/4324623/blog/4259230