在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
实验一 完成下载的LED点亮和进一步实验理解GPIO的定义
1. 做mbed实例首先需要理解和查看这几个mbed文件夹中的.h文档:
PinName.h顾名思义,就是管脚名称定义文档:
typedef enum {
PIN_INPUT,
PIN_OUTPUT
} PinDirection;
管脚输出方向,只有输出和输入,代码PIN_INPUT 或 PIN_OUTPUT
接着是管脚定义
typedef enum{较长,省略了,前边的
P0_0 = ( 0 << PIN_SHIFT) | 0x44,
P0_xx直接定义LPC824 的管脚名称,=后边的我们可以不管他,写寄存器位置的代码
以下同,一共有0~28 ——29个GPIO口;
再下边的定义实际上是Arduino的定义,很有趣,ARMmbed非常支持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);
*
* int main() {
* while(1) {
* led = !led;
* wait(0.2);
* }
* }
* @endcode
*/
新文档必须有
#include "mbed.h"
闪烁一个LED首先需要定义一个对象实例——C++,C#:
DigitalOut led(LED1);
实力名称为led,对应PinNames可以知道LED1是Arduino的定义,LED1=LED_RED,又为LED_RED =P0_15;因此括号了面可以填写LED1,或LED_RED,或P0_15,是一样的!
主函数中
int main(){
while(true){
led =!led;
wait(0.2);
}
}
表示红色的LED 0.2秒亮,0.2秒灭;
项目设置1 右击左边mbedplc824、General Optoins中右边Target/Device/下拉找到NXP/LPC800/NXP LPC824M201。见图10
项目设置2 Debuger右边的Setup下的Driver下拉选择J-Link/J-trace.见图11
项目设置3 在Debuger下边的J-Link/J-trace中的Connection中看是否选择了swd,如果是,不用改动就可以了。见图12
完成以上3步,就可以编译下载了。参考图13:
点击编译,完成后点击下载。
下边改动一下理解GPIO,zhijie yong 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);
}
}
结果见图14。
|
-
10-项目设置1
-
11-项目设置2
-
12-项目设置3
-
13-编译下载
-
14-显示结果
|