1. 开箱 我参加的端午的活动申请到了LPC11U24,和大家一样以为收到的会是宣传图片上官方的板子,拆开包装看到的却是:mbed NXP LPC11U24: 不过,还是很开心,毕竟有板子就是好活动啊~ 我还从来没用过ARM的MBED,这次正好有机会全面了解下。 打开包装是这个样子: 有数据线还是很贴心的,毕竟省去了找数据线的时间。 板子很小巧,还有针脚图的卡片,看起来方便多了:
2. 资料 接下来到ARM MBED的官网找资料: https://os.mbed.com/platforms/mbed-LPC11U24/
首先看到的就是:此板不再可用;该信息被提供作为现有用户的参考。mbed1768 mbed-LPC1768和L-TEK-FF-LPC546XX板提供了相同外形尺寸的替代品,而LPCXpresso11U68和FRDM-KL25Z则提供了NXP更强大的Cortex M0+平台,,,, 但右上角又说:要使用Mbed CLI为此板编译程序,请使用lpc11u24作为目标名称。 意味着:这个板子已经不适用最新的MBED编程支持了,但还可以用旧的~~~ 下面的网页有更详细的介绍: 示例、固件、原理图都在这个页面:
下载原理图,可以看到板子上4个LED灯是PIO1.8~11引出来的: 关于USB应用的例程分别在: 不过这些例程都基于Mbed 2。
3. MBED 先了解下MBED: mbed是一个面向ARM处理器的原型开发平台,它具体包括免费的软件库(SDK),硬件参考设计(HDK)和在线工具(Web)三部分内容,各个部分的具体介绍如下: SDK:mbed设计了一个硬件抽象层,从而屏蔽了不同mcu厂商提供了微处理之间的差异,对于用户来说,他只需要和这个硬件抽象层打交道即可,也就是说,用户基于mbed开发的应用可以很方便地更换使用不同厂商的arm微处理器,从而留给用户更多的选择。 HDK:HDK是mbed提供的硬件参考设计,它是面向用户开发设计的,所以HDK提供了统一了程序上载接口,单步调试接口,串口调试接口,用户无需购买其它硬件就可以开始软件开发工作。 WEB:为了省去用户开发环境安装的麻烦,mbed提供了一个完备的基于浏览器的微处理器软件开发环境,包括代码编写,程序编译,版本控制等功能,用户只要上网就可以开发,编译结果只要下载保存到mbed开发板上即可工作,非常方便。 mbed的体系结构 mBed是ARM公司官方提供的一套用于快速开发ARM架构单片机应用原型的工具集,包括免费的软件库(Software Development Kit,SDK),硬件设计参考(Hardware Development Kit,HDK)和基于Web的在线编译环境(mBed Compiler)三部分具体内容。所以,在不同的上下文中,mBed有可能指的是mBed SDK,也有可能指的是mBed开发板。由于mBed的代码和大部分硬件设计都是以开源(Open Source,permissive Apache 2.0 licence)的方式提供的,再加上它面向的ARM系列单片机具有较高的性价比和广泛的应用基础,所以mBed在世界范围内已经吸引了大量的电子产品开发者,其产业生态链已经初级规模。 Mbed OS 是ARM 公司于2014 年开始推出并逐步完善的一款免费的开源嵌入式实时操作系统, Mbed OS 专为基于ARM Cmtex-M 内核的MCU 设计,主要面向物联网终端。 所以,MBED主打的就是一个好用,MBED OS经过了很多代的发展,目前最新的是6.17.0, MBED OS支持的板子在这个网站: https://os.mbed.com/platforms/ 一共有178个板子可以直接使用mbed os,而mbed-LPC11U24仅能使用mbed os 2的版本,,,
4. 用MBED编程 使用在线编程(需要注册账号),进入CODE页面: https://os.mbed.com/code/ 点击start a new program,进入登录。新建工程里有mbed2 的例程: 可以看到,一切的底层配置都已经做好了,只要简单的输入即可: 插入开发板: 将生成的bin文件直接拖到U盘中,重新上电: 点亮1个LED~~~
想自己修改,只需找到PinNames.h文件,看到管脚的定义: - /* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #ifndef MBED_PINNAMES_H
- #define MBED_PINNAMES_H
- #include "cmsis.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef enum {
- PIN_INPUT,
- PIN_OUTPUT
- } PinDirection;
- #define PORT_SHIFT 5
- typedef enum {
- // LPC11U Pin Names
- P0_0 = 0,
- P0_1 = 1,
- P0_2 = 2,
- P0_3 = 3,
- P0_4 = 4,
- P0_5 = 5,
- P0_6 = 6,
- P0_7 = 7,
- P0_8 = 8,
- P0_9 = 9,
- P0_10 = 10,
- P0_11 = 11,
- P0_12 = 12,
- P0_13 = 13,
- P0_14 = 14,
- P0_15 = 15,
- P0_16 = 16,
- P0_17 = 17,
- P0_18 = 18,
- P0_19 = 19,
- P0_20 = 20,
- P0_21 = 21,
- P0_22 = 22,
- P0_23 = 23,
- P0_24 = 24,
- P0_25 = 25,
- P0_26 = 26,
- P0_27 = 27,
- P1_0 = 32,
- P1_1 = 33,
- P1_2 = 34,
- P1_3 = 35,
- P1_4 = 36,
- P1_5 = 37,
- P1_6 = 38,
- P1_7 = 39,
- P1_8 = 40,
- P1_9 = 41,
- P1_10 = 42,
- P1_11 = 43,
- P1_12 = 44,
- P1_13 = 45,
- P1_14 = 46,
- P1_15 = 47,
- P1_16 = 48,
- P1_17 = 49,
- P1_18 = 50,
- P1_19 = 51,
- P1_20 = 52,
- P1_21 = 53,
- P1_22 = 54,
- P1_23 = 55,
- P1_24 = 56,
- P1_25 = 57,
- P1_26 = 58,
- P1_27 = 59,
- P1_28 = 60,
- P1_29 = 61,
- P1_31 = 63,
- // mbed DIP Pin Names
- p5 = P0_9,
- p6 = P0_8,
- p7 = P1_29,
- p8 = P0_2,
- p9 = P1_27,
- p10 = P1_26,
- p11 = P1_22,
- p12 = P1_21,
- p13 = P1_20,
- p14 = P1_23,
- p15 = P0_11,
- p16 = P0_12,
- p17 = P0_13,
- p18 = P0_14,
- p19 = P0_16,
- p20 = P0_22,
- p21 = P0_7,
- p22 = P0_17,
- p23 = P1_17,
- p24 = P1_18,
- p25 = P1_24,
- p26 = P1_25,
- p27 = P0_4,
- p28 = P0_5,
- p29 = P1_5,
- p30 = P1_2,
- p33 = P0_3,
- p34 = P1_15,
- p35 = P0_20,
- p36 = P0_21,
- // Other mbed Pin Names
- LED1 = P1_8,
- LED2 = P1_9,
- LED3 = P1_10,
- LED4 = P1_11,
- USBTX = P0_19,
- USBRX = P0_18,
- // for Arch V1.1
- D0 = P0_18,
- D1 = P0_19,
- D2 = P0_17,
- D3 = P1_17,
- D4 = P1_18,
- D5 = P1_24,
- D6 = P1_25,
- D7 = P1_5,
- D8 = P1_26,
- D9 = P1_27,
- D10 = P0_2,
- D11 = P0_9, // P1_29 for Arch V1.0
- D12 = P0_8,
- D13 = P1_29, // P0_9 for Arch V1.0
- D14 = P0_5,
- D15 = P0_4,
- A0 = P0_11,
- A1 = P0_12,
- A2 = P0_13,
- A3 = P0_14,
- A4 = P0_16,
- A5 = P0_22,
- I2C_SCL = D15,
- I2C_SDA = D14,
- // Not connected
- NC = (int)0xFFFFFFFF,
- } PinName;
- typedef enum {
- CHANNEL0 = FLEX_INT0_IRQn,
- CHANNEL1 = FLEX_INT1_IRQn,
- CHANNEL2 = FLEX_INT2_IRQn,
- CHANNEL3 = FLEX_INT3_IRQn,
- CHANNEL4 = FLEX_INT4_IRQn,
- CHANNEL5 = FLEX_INT5_IRQn,
- CHANNEL6 = FLEX_INT6_IRQn,
- CHANNEL7 = FLEX_INT7_IRQn
- } Channel;
- typedef enum {
- PullUp = 2,
- PullDown = 1,
- PullNone = 0,
- Repeater = 3,
- OpenDrain = 4,
- PullDefault = PullDown
- } PinMode;
- #ifdef __cplusplus
- }
- #endif
- #endif
复制代码
点亮全部4个LED,修改文件,就这么简单:
总结:MBED OS使用起来真简单啊~~~
|