嵌入式技术论坛
直播中

万航渡路

8年用户 1295经验值
擅长:电源/新能源
私信 关注
[经验]

在RT-Thread系统下初始PWM设备步骤简析

1、初始环境介绍:
首先你需要准备一个可以编译和下载的基于N32G457开发板的工程。
最后点击编译后我们的效果应该是如图:

这样就准备好了!下面开始修改。
2.1 初始pwm设备查看
首先类似于PIN设备,PWM设备在工程中是默认开启了的,不需要我们勾选。
打开 RT-Thread Settings-更多设置-组件-设备驱动程序 可以看到确实已经被勾选了

把整个工程下载进板子跑一下
开终端看一下:我这里是串口7

输入list_device指令,查看一下当前的设备

其实已经默认帮我们开启了四个pwm通道,都是使用定时器3
2.2 添加TIM2pwm1
我们下面再开启一个TIM2pwm1作为例子:
首先查看工程目录下rtconfig.h文件。在最后可以看到相关的宏定义

仿照已经生成的,添加我们的宏定义,添加后如图

但还没有结束!我们还需要进一步修改:
先选择工程目录-Libraries-rt_drivers-drv_gpio.c文件:添加如下代码

但是我们的PWM1_TIM2_CONFIG并没有定义,所以可以先查看一下下面PWM1_TIM3_CONFIG是如何定义的,去补充一个
PWM1_TIM3_CONFIG定义在drv_gpio.h文件下,仿照他的定义,我们补充后如图

到这里 其实我们的设备已经注册到list_device列表了。
2.3使用TIM2
在board-msp-n32_msp.c中已经给了一个使用的小示例,我们可以继续仿照修改:
在第490行左右,添加我们刚才注册到系统的设备名称,也就是tim2pwm1,进行修改:修改后如下图

进行下载后
可以再查看一下list_device

之后在msh执行pwm_led_sample命令,就使能pwm了。
ps:
笔者实验过程中也遇见很多插曲,如在声明注册到设备列表的字符串,如tim2pwm1,请不要写的过长,他会忽略后面的。
另外,本例子打开的是tim2,该定时器在n32_msp.c函数约158行,void n32_msp_tim_init(void *Instance)函数中已经列出了
TIM1 TIM2 TIM3三个定时器的初始化,如果你想开启TIM4,请在这里先设置好时钟等的使能。
该文仅供参考,仅作个人记录。

原作者:马里亚纳砖头

更多回帖

发帖
×
20
完善资料,
赚取积分