回答

收藏

【赚周年币】 开始第一个MBED实例 三

#线上活动 #线上活动 1994 人阅读 | 0 人回复 | 2017-01-09

本制作完成首个mbed工程下载点亮LED和通过进一步实验理解GPIO的定义。
在LPC824工程中,文件夹非常简洁,除了1个mbed文件夹就是1个main.cpp文件,我们以它开始。
1. 做mbed实例首先需要理解和查看这几个mbed文件夹中的.h文档:
PinName.h顾名思义,就是管脚名称定义文档:
typedef enum {
PIN_INPUT,
PIN_OUTPUT
} PinDirection;
管脚输出方向,只有输出和输入,代码PIN_INPUT 或 PIN_OUTPUT,实际上在C++语言中,这个属于类定义,针对对象的类描述或方法声明。以下这种解释就省了。
接着是管脚定义
typedef enum{较长,省略了,前边的
  P0_0  = ( 0 << PIN_SHIFT) | 0x44,
  P0_xx直接定义LPC824 的管脚名称,=后边的我们可以不管他,写寄存器位置的代码
以下同,一共有0~28 ——29个GPIO口;
再下边的定义实际上是Arduino的定义,很有趣,mbed非常支持Arduino。为此我也玩了一通Arduino板子。定义直接了当:
D0~D15是数据IO口,右边的是LPC824定义的GPIO
A0~A5是ADC输入口,右边也是LPC824的定义,以下同,见名思意,应该可以理解的。
最后是定义口类型,上拉,下拉,等。接着看DigitalOut.h文档,在文档的前部名字空间——C++或C#的基本,有一实例列出如下[逐句标注@中的语句]:
/** A digital output, used for setting the state of a pin
*
* @Note Synchronization level: Interrupt safe
*
* Example:
* @code
* // Toggle a LED
* #include "mbed.h"//头文件是必须的
*
* DigitalOut led(LED1);//定义对象类,名称为led,方法为LED1
*
* int main() {//整形主函数
*     while(1) {//死循环
*         led = !led;//每运行一次led的值取反
*         wait(0.2);//内置延时函数,等待0.2秒
*     }
* }
* @endcode
*/
下边按照项目来进行实验
2. 首先需要设置项目设置
项目设置1 右击左边mbedplc824/General Optoins中右边Target/Device/下拉找到NXP/LPC800/NXP LPC824M201。见图1
项目设置2 Debuger右边的Setup下的Driver下拉选择J-Link/J-trace.见图2
项目设置3 在Debuger下边的J-Link/J-trace中的Connection中看是否选择了swd,如果是,不用改动就可以了。见图3  
完成以上3步,就可以编译下载了。参考图4:
点击编译,完成后点击下载就可以看到红色的LED闪烁了。
为了好理解,下边将这个工程文件拷贝上:
#include "mbed.h"
DigitalOut led(LED1);
int main(){
while(true){
  led =!led;//运行led的反值
  wait(0.2);//延时0.2秒
}
}
只有8行语句,里面没有一个是牵涉到硬件的——这就是mbed的优势!——开发人软不需要知道底层如何如何,只需要关心你操作的对象实例就可以了。上例中对象实例:led——输出实例,因为简单属性都没有了,执行语句就是翻转值和延时。照片省了,自己运行看结果最好。
3. 下边改动一下,为了更好的理解GPIO,直接用P0_xx来定义:
#include "mbed.h"
DigitalOut myled0(P0_15);
DigitalOut myled1(P0_16);
DigitalOut myled2(P0_17);
int main(){
while(true){
  myled0= 1;myled1= 0;myled2= 1;
  wait(0.2);
  myled0= 0;myled1= 1;myled2= 0;
  wait(0.2);
}
}
结果见图5。
以上工程非常简单,但比常规编程会发现更简单!

30_项目设置1_选NXP_LPC824芯片.jpg (93.55 KB, 下载次数: 34)

图1

图1

31_项目设置2_选择下载工具_JLINK.jpg (99.3 KB, 下载次数: 40)

图2

图2

32_项目设置3_swd.jpg (103.78 KB, 下载次数: 34)

图3

图3

33_IAR中编译_下载.jpg (196.42 KB, 下载次数: 28)

图4

图4

34_3个LED闪烁.JPG (259.98 KB, 下载次数: 36)

图5

图5

评分

参与人数 1 +15 收起 理由
loveeeboard + 15

查看全部评分

分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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