查看: 3168|回复: 0

[原创] [我为LPC代言] 完成下载的LED点亮和进一步实验理解GPIO的定义

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-12-18 20:22:52 | 显示全部楼层 |阅读模式
    实验一 完成下载的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

    10-项目设置1

    11-项目设置2

    11-项目设置2

    12-项目设置3

    12-项目设置3

    13-编译下载

    13-编译下载

    14-显示结果

    14-显示结果
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-29 05:51 , Processed in 0.083434 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表