美文网首页
armMbed开发指南

armMbed开发指南

作者: 森林中的大象 | 来源:发表于2019-01-12 22:09 被阅读0次

    添加工程

    新建文件夹作为工作区,在文件夹中添加以下内容:

    mbed-os
    mbed-lora-radio-drv,拷贝该文件夹中所有文件
    main.cpp
    mbed_app.json

    初始化

    进入工程文件夹,右键,Git Bash here,

    mbed new . --create-only
    mbed target NUCLEO_L433RC_P
    mbed toolchain GCC_ARM
    mbed config GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin"
    mbed config --list

    编译

    进入工程文件夹,右键,Git Bash here,

    mbed compile

    下装

    打开Jflash,新建一个工程,芯片选择EFMLG330 256kb
    找到编译生成的二进制文件,位于BUILD文件夹
    将*.hex文件拖入Jflash

    Target->connect
    Target->ProductionPprograming

    开发环境

    python
    GCC_ARM Toolchain使用version6
    git
    mbed-cli

    创建工程文件夹

    新建一个文件夹,用于存放整个工程。注:文件夹名称不能包含空格
    添加操作系统文件夹:mbed-os,git clone https://github.com/ARMmbed/mbed-os
    添加sx1276 驱动程序文件夹:mbed-lora-radio-drv,
    添加驱动应用文件:lora_radio_helper.h、mbedtls_lora_config.h、trace_helper.cpp、trace_helper.h
    添加配置文件:mbed_app.json,见附件
    添加主文件:main.cpp

    初始化

    mbed new . --create-only
    mbed target NUCLEO_L433RC_P
    mbed toolchain GCC_ARM
    mbed config GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin"
    mbed config --list

    配置

    总配置文件mbed_app.json仅有一个,位置在最上层的目录中
    库配置文件mbed_lib.json有多个, mbed中包含许多库,每一个库都含有一个mbed_app.json文件,用于配置对应的库

    mbed_app.json包含两个部分:config和target_overrides

    “config”:{
    "parameter1":{"value":"****"}
    "parameter2":{"value":"****"}
    …………
    }
    

    value用于表示参数的数值

    “target_overrides”:{
        "*": {
                "parameter1": "****"
                "parameter2": "****"
                …………
            }
        " target2": {
                "parameterI": "****"
                "parameterII": "****"
                …………
            }
        " target3": {
                "parameter_1": "****"
                "parameter_2": "****"
                …………
            }
        ……………………
    }
    

    ""部分的设置应用于所有的targets," target1"部分的设置仅应用于target1," target2"部分的设置仅应用于target2,……
    "
    "部分的设置会覆盖" target1"、" target2"、" target3"……的配置
    mbed_lib.json中的配置都可以出现在mbed_app.json文件的target_overrides中,并且被其覆盖,因此,所有的配置都在mbed_app.json文件中编写即可,不用管各个mbed_lib.json文件
    配置方法:
    查看库的mbed_lib.json文件,
    举例说明:lora库的配置mbed_lib.json文件中:
    lora库的mbed_lib.json文件中,其中"name"部分表示库名,"config"部分表示配置项
    相应的在mbed_app.json文件中的配置:格式:库名.配置项

    查看配置

    mbed compile --config

    编译

    进入工程文件夹Git Bash here

    mbed compile

    系统执行编译。
    编译完成后生成mbed_config.h文件,位置在BUILD文件夹中,它包含了所有的配置参数,仅用于查看,不能对其做修改
    编译完成后生成bin文件,位置在BUILD文件夹中 ,使用J-LINK烧写bin文件地址0x08000000

    LoRa参数配置

    "lora.device-eui": "{0x70, 0xb3, 0xd5, 0x31, 0xc0, 0x00, 0x01, 0x53 }",
    "lora.device-address": "0x28ad9153",                            
    "lora.appskey": "{0xe0, 0x8c, 0x28, 0xff, 0xcf, 0x7a, 0x47, 0xff, 0x7a, 0xb5, 0xeb, 0x00, 0xbd, 0x00, 0x01, 0x53}",           
    "lora.nwkskey": "{0x3a, 0x1e, 0xbd, 0x00, 0x3a, 0xc8, 0x8c, 0x00, 0xc0, 0xc5, 0x1e, 0xff, 0xea, 0xd2, 0x65, 0x53}",
    

    arm Mbed API

    GPIO

    DigitalIn Din1(PB_0, PullNone);  // PullUp/PullDown/PullNone/OpenDrain
    DigitalOut Dout1 (PB_1);  
    AnalogIn  Ain1(PA_0);
    AnalogOut  Aout1 (PA_5);
    int main() 
    {
        bool din1= Din1.read();
        int ain1= Ain1.read();
        Dout1.write(1);  //0/1
        Aout1.write(0.5); //0.0f(0v) - 1.0f(3.3v)
        wait(3); //3s
        Aout1.write_u16(0x1111); //0x0000(0v) - 0xFFFF(3.3v)
    }
    

    Serial

    Serial Uart1(PB_8, PB_9, 19200);   // tx, rx
    uint8_t data[100];
    int main() 
    {
      Uart1.format (8,None,1);  // number of bits in a word/ parity / number of stop bits
      Uart1.printf("Hello World\n");
      while(Uart1.readable()) //  if there is a character available to read
      {
        Uart1.read(data,10,NULL, SERIAL_EVENT_RX_COMPLETE, SERIAL_RESERVED_CHAR_MATCH)
        Uart1.write(data,10,NULL, SERIAL_EVENT_RX_COMPLETE, SERIAL_RESERVED_CHAR_MATCH)
      }
    }
    

    SPI

    SPI Spi1(PC_1, PC_2, PC_3, PD_0); // mosi, miso, sclk
    DigitalOut cs(PD_0); 
    
    {
      Spi1.format (8,3);  // number of bits per SPI frame(4-16) / Clock polarity and phase mode (0-3)
      Spi1.frequency(1000000);
      cs.write(1); 
      cs.write(0);  
      Spi1.write(0x8F);
      cs.write(1);
    }
    

    I2C

    I2C I2c1(PD_1,PD_2);   // SDA,SCL
    const int addr_read = 0x48;    //读地址 0x40<<1+0x1
    const int addr_write = 0x90;    //写地址 0x40<<1+0x0
    int main() 
    {
        char cmd[2]={0x01,0x02};
        i2c.write(addr_write, cmd, 2);
        wait(0.5);
        i2c.write(addr_write, cmd, 1);
        i2c.read( addr_read, cmd, 2);
    }
    

    相关文章

      网友评论

          本文标题:armMbed开发指南

          本文链接:https://www.haomeiwen.com/subject/xghhdqtx.html