本文将介绍怎么样在VScode环境下,将AliOS Tings提供的blink例程在Developerkit开发板上运行起来。

DeveloperKit开发板
 
在例程中分别用到两个led和一个按钮,上图中用红色的框标识出来。例程正确运行后,会有一个LED按1s的周期闪烁,另外一个LED当按键被按下时,切换输出电平。本文中,各个硬件的分配如下表:
外设名称
对应gpio
实验中的功能
LED1
PB6
每秒闪烁1次
LED2
PE3
当检测到按键时切换输出电平
按钮M
PE11
通过中断方式检测按接下来我们进入代码,并按照具体的硬件对应引脚修改源码。
同VS CODE打开AliOS-Things 2.0源码,如果您还没有AliOS-Things的源码,可以在VS code的控制台中通过git工具进行拉取,拉取命令如下:
git clone https://github.com/alibaba/AliOS-Things.git

打开源码后,我们在源码的app/example/blink目录下,打开blink.c,在源码的顶部找到几个宏定义如下:
#define GPIO_LED_IO     18
#define GPIO_TRIGGER_IO 4
#define GPIO_INPUT_IO 5
上述的几个宏定义需要和我们和实际的硬件对应,对应关系如下表:
宏定义
对应硬件
实际IO口
OS中的引脚编号
实验中的功能
GPIO_LED_IO
LED1
PB6
22
每秒闪烁1次
GPIO_TRIGGER_IO
LED2
PE3
67
当检测到按键时切换输出电平
GPIO_INPUT_IO
按钮M
PE11
75
通过中断方式检测按键
由于AliOS-Things对硬件进行了抽象,所以对GPIO的操作需要先按照一定的规则将MCU的GPIO转换为编号。转换规则为MCU的GPIO bank号 X 16 + 具体gpio在bank中的位置,bank的编号从0开始。如PB6,其bank号为1在bank中的位置为6,则PB6应被转换为 1 X 16 + 6 = 22;同理,PE3=4 x 16 + 3 = 67。因为例程不是为Developerkit开发板而写,所以需要修改例程中的宏第一如下:
#define GPIO_LED_IO     67      // PE3
#define GPIO_TRIGGER_IO 22 // PB6
#define GPIO_INPUT_IO 75 // PE11
完成修改后,保存blink.c文件。
在VS CODE环境中,在左下角的alios-studio中,点击编译目标选择按钮
此时编辑器顶部的命令输入框会弹出选择要编译的目标,此时选择blink
紧接着会继续要求选择开发板,此时选择Developerkit开发板。
接下来通过alios-studio工具条的编译按钮启动编译。
等待编译完成。
Making blink@developerkit.bin
Making blink@developerkit.hex AOS MEMORY MAP
|=================================================================|
| MODULE | ROM | RAM |
|=================================================================|
| newlib_stub | 296 | 0 |
| sal | 6977 | 250 |
| kv | 3055 | 104 |
| common | 256 | 12 |
| libc_nano | 19649 | 602 |
| kernel_init | 653 | 36 |
| rhino | 16225 | 7821 |
| developerkit | 5045 | 1403 |
| vfs | 950 | 1141 |
| digest_algorithm | 92 | 0 |
| libgcc | 3320 | 0 |
| stm32l4xx_cube | 26592 | 8506 |
| cli | 6234 | 357 |
| yloop | 2369 | 28 |
| device_sal_bk7231 | 8542 | 265 |
| sensor | 9451 | 303 |
| osal | 1074 | 4 |
| log | 412 | 20 |
| hal | 164 | 12 |
| blink | 325 | 24 |
| atparser | 5882 | 297 |
| armv7m | 1975 | 0 |
| *fill* | 150 | 1599 |
|=================================================================|
| TOTAL (bytes) | 119688 | 22784 |
|=================================================================|
Build complete
将Developerkit连接至PC,确保开发板的STlink驱动已被正确安装。
通过alios-studio工具条中的下载按钮,将编译好的固件下载到开发板中。
烧写完成后开发板会自动运行,此时可以看到LED开始按1s为间隔闪烁。按动板上的“M”按钮,LED2会切换输出。这里要指出,blink Demo主要为了演示GPIO的HAL层操作函数,并没有做按键去抖动工作,所以点按按钮时,可能会出现按一次LED2直接切换两次。也请大家在实际的代码设计中注意按键去抖能力的加入。到此,例程已成功完成运行。
 
 
阅读原文​​​​​​​

在Developerkit开发板上运行blink例程的更多相关文章

  1. 如何编译(helloworld)可以在开发板上运行的应用

    本节介绍如何编译可以在开发板上运行的应用,编译方法很简单.基于:iTOP4412开发板首先要确定一下环境变量,如下图所示,使用“cd”命令回到根目录,然后使用命令“vim .bashrc”打开环境变量 ...

  2. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  3. [转载]在iTOP-4412开发板上调试helloworld应用

    本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安 ...

  4. DevEco Device Tool 2.1 Beta1在Hi3861开发板上可视化分析的体验

    DevEco Device Tool迎来了2.1 Beta1,新版本有很多亮点.在上次"DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验 ...

  5. DE1-SOC开发板上搭建NIOS II处理器运行UCOS II

    DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...

  6. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  7. easycwmp在开发板上的配置

    原创作品,转载请注明出处 copyright:weishusheng   2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...

  8. 开发板上使用core文件调试

    转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和cor ...

  9. 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

    在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...

随机推荐

  1. Spring源码解读--(一)源码下载

    走在Java程序员这条路上,网上Java各种工具满天飞,写个简单的CRUD,相信是个开发都能写出来,于是在思考如何可以在同行业中更有竞争力(其实就是如何赚更多钱).那么,老大给我推荐了Spring源码 ...

  2. ruby异常处理

    begin # 这段代码抛出的异常将被下面的 rescue 子句捕获 rescue # 这个块将捕获所有类型的异常 retry # 这将把控制移到 begin 的开头 end

  3. mysql处理百万数据遍历速度提升(遍历图片名字是否存在)

    CREATE DEFINER=`root`@`localhost` FUNCTION `fun_wcmappendix02`(image_name VARCHAR(50)) RETURNS int(1 ...

  4. Linux_自制系统服务启动脚本

    目录 目录 前言 Case语句 Apache 启动脚本 Postfix service 启停脚本 前言 在Linux的某些系统服务中,需要自己定制启动服务的脚本.通常会使用Cash语句来实现. Cas ...

  5. mariadb(二)增删改

    一.表的结构的增删改 添加数据类型 alter table 表名 add 字段 数据类型: #如果字段存在则会报错 Duplicate column name '字段' #修改数据类型 alter t ...

  6. js-判断当前页面是否在移动端打开显示的

    if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)==false) { //该页面不是在移动端打开的, }

  7. VS2012不显示最近打开的文件

    解决: 1.点击开始,在左下角输入“regedit” 2.右击HKEY_CURRENT_USER,点击查找,输入NoRecentDocsHistory 3.右边找到NoRecentDocsHistor ...

  8. Nginx 介绍配置

    nginx的功能和优缺点 nginx是一种服务器软件,将程序放在nginx服务器上,将程序发布出去,nginx是一种高性能的Http和反向代理服务器,同时也是一个代理邮件服务器,也可以实现负载均衡. ...

  9. eclipse或者myeclipse的代码提示功能

    第一步:打开eclipse,在菜单栏选择window-->preferences 第二步:在左边tree菜单栏选择General-->keys 第三步:在右边的文本框中输入content, ...

  10. deepin下安装配置git

    https://blog.csdn.net/menglinjie/article/details/77145537 1.安装gitsudo apt-get install git12.配置用户名和邮箱 ...