发新帖本帖赏金 30.00元(功能说明)我要提问
12下一页
返回列表
打印
[IoT技术交流]

基于RT_Thread 的NuMaker--PFM--M487 应用开发

[复制链接]
2045|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#
先前曾参与一次新唐M471开发板的测评,后来便得到了一次优惠购置NuMaker--PFM--M487的机会,该开发板的外观如图1所示。
图1 开发板外观
在往常,对新唐产品的开发多轻车熟路地使用MDK来进行,随着几次参赛发现主办方多在要求使用RT_Thread来开发,于是也打算以RT_Thread来开发NuMaker--PFM--M487。
起初试了几次并不成功,几乎要放弃这种开发方式,后来还是逐渐入了门。
有人也许会问就必须赶这个风潮吗?
其实还真不完全是,主要是采用RT_Thread开发有其相对的优势,主要体现在:
(1)它支持线程化处理编程
(2)它所支持的芯片和开发板越来越丰富
(3)它提供了功能库的支持方式
就RT_Thread来讲,它最初所支持的开发板并不多,仅有AB32VG1、AT32F403、CH32V307等,如今却丰富了许多,新增的开发板有N32G457、M487、CH32V103、CPK-RA6M4、HPM6750等。
由于它与MDK一样可以随着版本的升级而推出新的支持包来扩展所支持的开发板,故能省去使用一种开发板就需要安装一种软件的烦恼。
此外,使用同一种工具开发可以免去往复步入由生到熟的学习过程。
当然最主要的还是它所提供的功能库支持,以往不同的厂家每推出一款新品,都要推出相应的软件升级包、驱程及相关例程等。尽管通过例程可以帮助使用者开始的了解和掌握片内资源的性能及用法,但在外设的扩展方面还是需要用户自己去拓展和丰富。而有了功能库的支持就不同了,在支持库中它对外设进行了相应的归类,使用时对其加以添加和调用即可,这样就可以省去相对重复性的劳动,达到高度的共享。
这里吹了这么多的RT_Thread,那我们如何用它来开发M487呢?
目前来讲,RT_Thread对M487所支持的板卡有2款,即NuMaker--PFM--M487和NuMaker--IOT--M487。
除开发板所侧重的功能方向不同外,2款板子的区别如下:
(1)结构布局的差异
尽管2款开发板的器件差异不大,但在结构布局上却差异较大,见图2和图3所示。
(2)价格的差异
在价格上,2款开发板的差异也是很大的,一款是127元,另一款却是426元。
(3)开发模板差异
在开发模板方面,2款开发板也是有差异,对于NuMaker--IOT--M487是提供LED测试的,而对于NuMaker--PFM--M487则是一个空函数,见图4和图5所示。

图2 NuMaker--IoT--M487

图3 NuMaker--PFM--M487
图4 NuMaker--IoT--M487
图5 NuMaker--PFM--M487
有了前面概括性的认识,那该如何使用RT_Thread呢?
1.创建RT_Thread项目
使用“文件”菜单下的“RT_Thread项目”选项来创建一个项目,见图6所示。
图6 创建项目
对于初次使用M487者,需在选取“基于开发板”方式后,选取“添加更多”选项以添加相应的支持包,见图7所示。

图7 添加支持包
随后需要按图8所示,添加开发板支持包和调试器支持包。
由于2款开发板的MCU是相同的,测试时自然是使用NuMaker--IoT--M487模板来创建项目,见图9所示。
图8 添加内容
图9 创建项目

2.编译程序
在完成项目创建,经编译其结果见图10所示。此时,在“Debug”的目录下会得到一个名为“rtthread.bin”的生成文件。

图10 完成创建与编译
为了进行程序下载,应安装开发板的驱动Nu-Link_USB_Driver 1.6。在完成安装后,将板上的设置开关置到指定位置,则可见到图11所示的虚拟串口。
图11 虚拟串口
3.程序下载
将生成的文件rtthread.bin拖入开发板所虚拟的U盘中,即可实现程序的下载,其运行效果如图 13所示,即红色指示灯不停地闪动10次。
图12 虚拟U盘
图 13 运行效果
对于一款开发板要掌握它的性能和使用方法,最基本的就是从GPIO口开始。
板载的LED与KEY ,恰好为GPIO的学习提供了条件,板载的3个LED和2个按键的电路见图14所示。
图14 原理图
具体的引脚连接关系为:
LEDR----PH0
LEDY----PH1
LEDG----PH2
SW2 ----PG15
SW3 ----PF11
以按键SW2控制LEDY,按键SW3控制LEDG的程序为:
#include <rtconfig.h>
#include <rtdevice.h>
#include <drv_gpio.h>
#define LEDR   NU_GET_PININDEX(NU_PH, 0)
#define LEDY   NU_GET_PININDEX(NU_PH, 1)
#define LEDG   NU_GET_PININDEX(NU_PH, 2)
#define K2     NU_GET_PININDEX(NU_PG, 15)
#define K3     NU_GET_PININDEX(NU_PF, 11)
int main(int argc, char **argv)
{
#if defined(RT_USING_PIN)
    int counter = 0;
    rt_pin_mode(LEDR, PIN_MODE_OUTPUT);
    rt_pin_mode(LEDY, PIN_MODE_OUTPUT);
    rt_pin_mode(LEDG, PIN_MODE_OUTPUT);
    rt_pin_mode(K2, PIN_MODE_INPUT);
    rt_pin_mode(K3, PIN_MODE_INPUT);
    while (1)
    {
        rt_pin_write(LEDR, PIN_HIGH);
        if(rt_pin_read(K3)==0)rt_pin_write(LEDY, PIN_HIGH);
        else rt_pin_write(LEDY, PIN_LOW);
        if(rt_pin_read(K2)==0) rt_pin_write(LEDG,PIN_HIGH);
        else rt_pin_write(LEDG, PIN_LOW);
        rt_thread_mdelay(500);
        rt_pin_write(LEDR, PIN_LOW);
        rt_thread_mdelay(500);
    }
#endif
    return 0;
}
经编译,其结果如图15所示。
图15 编译结果
在按下按键后,则会发现相应的LED灯熄灭,否则会处于点亮状态。
有了使用GPIO口的基础,后续这可以进行相应外设的显示功能,如OLED屏的显示等。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2022-04-21
理由:恭喜通过原创文章审核!请多多加油哦!

评论
21小跑堂 2022-4-21 16:42 回复TA
RT_Thread+NuMaker-PFM-M487强强联合,适合开发入门。基础入门知识,鉴于操作系统和开发板支持一下~ 
沙发
caoqing| | 2022-4-16 17:12 | 只看该作者
你应该在https://club.rt-thread.org/index.html选择**里发表

使用特权

评论回复
板凳
match007| | 2022-4-16 17:13 | 只看该作者
虚拟U盘?是什么

使用特权

评论回复
地板
jinglixixi|  楼主 | 2022-4-16 23:07 | 只看该作者
match007 发表于 2022-4-16 17:13
虚拟U盘?是什么

开发板是可以在电脑端虚拟成一个U盘的,从而成为下载程序的一种手段。

使用特权

评论回复
5
jinglixixi|  楼主 | 2022-4-16 23:08 | 只看该作者
caoqing 发表于 2022-4-16 17:12
你应该在https://club.rt-thread.org/index.html选择**里发表

好的,回头试一试。

使用特权

评论回复
6
redone| | 2022-4-22 16:10 | 只看该作者
这~~
现在评测和原创可以同时了?

使用特权

评论回复
7
jinglixixi|  楼主 | 2022-4-23 08:41 | 只看该作者
redone 发表于 2022-4-22 16:10
这~~
现在评测和原创可以同时了?

没有,M487不是论坛测评的板子。

使用特权

评论回复
8
Meow123| | 2022-5-3 16:12 | 只看该作者
不知道哪里出了问题,LED一直点不亮

使用特权

评论回复
9
jinglixixi|  楼主 | 2022-5-3 21:06 | 只看该作者
Meow123 发表于 2022-5-3 16:12
不知道哪里出了问题,LED一直点不亮

所用引脚是否对?使用M487的IoT开发板模式建过程试试。

使用特权

评论回复
10
tpgf| | 2022-5-4 16:18 | 只看该作者
这个系统很好用

使用特权

评论回复
11
wiba| | 2022-5-4 16:27 | 只看该作者
效果非常不错啊

使用特权

评论回复
12
nawu| | 2022-5-4 16:43 | 只看该作者
请问什么是虚拟U盘啊

使用特权

评论回复
13
zljiu| | 2022-5-4 16:55 | 只看该作者
调试人工得多久呢

使用特权

评论回复
14
tfqi| | 2022-5-4 17:21 | 只看该作者
为什么价格相差这么多呢

使用特权

评论回复
15
drer| | 2022-5-4 18:00 | 只看该作者
这个是活动申请的开发板吗

使用特权

评论回复
16
jinglixixi|  楼主 | 2022-5-4 23:47 | 只看该作者
drer 发表于 2022-5-4 18:00
这个是活动申请的开发板吗

不是

使用特权

评论回复
17
jinglixixi|  楼主 | 2022-5-4 23:49 | 只看该作者
tfqi 发表于 2022-5-4 17:21
为什么价格相差这么多呢

不太清除呀!

使用特权

评论回复
18
jinglixixi|  楼主 | 2022-5-4 23:53 | 只看该作者
tpgf 发表于 2022-5-4 16:18
这个系统很好用

用熟了的确比较方便

使用特权

评论回复
19
jinglixixi|  楼主 | 2022-5-4 23:55 | 只看该作者
zljiu 发表于 2022-5-4 16:55
调试人工得多久呢

摸索的时间比较长,按这篇内容开个头就比较快了。

使用特权

评论回复
20
jinglixixi|  楼主 | 2022-5-4 23:55 | 只看该作者
wiba 发表于 2022-5-4 16:27
效果非常不错啊

感谢支持!!!

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2780

帖子

38

粉丝