查看: 1189|回复: 0

【NuMaker-PFM-M453试用体验】了解开发板及使用Mbed编译循环点亮三色灯程序

[复制链接]
  • TA的每日心情
    开心
    2018-1-11 10:30
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-11-30 08:57:24 | 显示全部楼层 |阅读模式
    分享到:
    早就想了解Mbed平台并使用Mbed进行项目开发,但是手中一直没有支持Mbed的开发板,于是趁着这次免费试用的活动申请了一块支持Mbed的NuMaker-PFM-M453开发板。
            第一眼看到NuMaker-PFM-M453,感觉跟之前接触过ide开发板差不多,最吸引我的是它火红的外观。那么,首先来了解一下开发板的构造吧。

    图1.NuMaker-PFM-M453整体外观
            从上图可以看到,NuMaker-PFM-M453除了有扩展的GPIO口外,主控板本身亦内建丰富的接口设备,如蜂鸣器、RGB三色 LED、三个按键(含一个复位按键)、麦克风、音频接口、USB OTG、CAN总线、RS485总线、三轴加速度计与三轴陀螺仪传感器等完整的传感器群。
            值得一提的是,NuMaker-PFM-M453 搭载运行速度达到72MHz的ARM Cortex-M4F 内核,主控板的通用接口设计,提供兼容 Arduino UNO 接口,也就是说,在使用NuMaker-PFM-M453进行项目开发时可直接接入任何 Arduino 模块,这一特性为需要使用Arduino模块的开发者省去了许多工作。
            然而,最令我感兴趣的是,NuMaker-PFM-M453这块开发板支持Mbed OS。从我目前学习到的关于Mbed的知识来看,使用Mbed开发项目是比较方便的,Mbed使用户在开发时不必过多去关心底层硬件的实现,并且提供了较多的API供用户使用。来看一下Mbed官网中NuMaker-PFM-M453开发板引脚图。

    图2.Mbed官网NuMaker-PFM-M453引脚图        
            上图中,蓝底白字的引脚都是可以自己定义使用的,哪个引脚有哪些功能上面也都做有标记,为项目开发提供了便利。
            话不多说,用USB线连接开发板与电脑看看情况如何。

    图3.NuMaker-PFM-M453接入电脑
            开发板连接电脑之后,此时开发板已经有一个程序在运行,按下SW2按键时点亮三色RGBLED2的蓝灯和LED1,按下SW1时蜂鸣器响。
            而电脑上会出现一个名字为MBED的U盘。打开U盘后,点击mbed.htm文件就可以进入Mbed官网NuMaker-PFM-M453的界面。

    图4.Mbed官网NuMaker-PFM-M453界面
            因为要使用Mbed在线编译器,所以在Mbed官网NuMaker-PFM-M453界面中点击“Add to your Mbed Compiler”,将开发板添加到编译器的项目中。然后点击“Compiler”进入在线编译器。当然,首先要有一个Mbed的账号。
            进入编译器之后,新建一个项目,选择Platform为NuMaker-PFM-M453,由于要编译一个循环点亮彩灯程序,所以选择的例程为NuMaker GPIO button with LED and buzzer。刚开始不熟悉Mbed的开发流程,可以借助Mbed提供的例程,看懂例程的代码,然后做些修改实现这个简单的功能。

    图5.新建NuMaker-PFM-M453例程
            修改好例程代码之后,编译会生成一个.bin文件。将这个.bin文件下载下来,直接拖进MBED盘里面,然后按下板子上的复位键即可。可以看到开发板RGB三色灯开始轮流点亮。
            不知道怎么传视频,
            194640261117c0360cf2594.mp4
            总结:虽然第一次使用nuvoTon的板子,但是NuMaker-PFM-M453搭配Mbed使用还是很容易上手的,只需要编写很简单的程序就实现了RGB三色灯的轮流点亮。
            修改之后的代码如下:
    #include "mbed.h"//定义引脚PD_2,PD_3,PD_7为输出,这三个引脚分别控制RGB三个灯DigitalOut    rgbled_B(PD_2);         //低有效DigitalOut    rgbled_R(PD_3);         //低有效DigitalOut    rgbled_G(PD_7);         //低有效int main() {    rgbled_B=1; rgbled_R=1; rgbled_G=1;        //刚开始所有灯都不亮    while (1) {        rgbled_B=0;        //点亮蓝灯        rgbled_R=1;        rgbled_G=1;        wait(0.5);        //等待0.5s        rgbled_R=0;        //点亮红灯        rgbled_B=1;        rgbled_G=1;        wait(0.5);        rgbled_G=0;        //点亮绿灯        rgbled_B=1;        rgbled_R=1;        wait(0.5);    }}
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 18:07 , Processed in 0.135058 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.