armMbed开发指南

2019-01-12  本文已影响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);
}
上一篇 下一篇

猜你喜欢

热点阅读