摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样。如果仅仅利用HaaS100的联网功能,那简直是太浪费了。HaaS100拥有其他开发板所具备的所有的功能,比如GPIO、IIS、IIC、SPI、PWM等等等等。例程中的blink_demo编译并下载到HaaS100开发板后,5个指示灯是同时点亮和熄灭的,到底每个指示灯怎么控制,官方文档中并没有详细介绍。本文从控制一个特定的GPIO实现单独一个LED闪烁入手,将阿里云blink_demo例程进行更深的讲解,跟大家一起进入HaaS100底层硬件开发。
目录
硬件:HaaS100物联网开发板
软件:aos(命令行版),win7 x64系统
实验目的
编程实现一个单独的LED灯闪烁。
1.操作步骤
1.1 搭建编程环境
详细步骤请参考下面连接,如果已经成功编译并下载过helloworld_demo,证明您已经掌握了基本操作,请忽略搭建编程环境这一步。
初学者入门阿里云Haas100开发板基本步骤
1.2 修改程序
打开C:\Users\Administrator\AliOS-Things\application\example\blink_demo目录下的blink_demo.c。
根据个人喜好可以使用各种工具,推荐使用Notepad++。
可通过链接https://download.csdn.net/download/youngwah292/12127037下载
打开之后,进入第31行,用0x22替代原来的GPIO_LED_IO。为什么用0x22这个特殊的十六进制数字代替呢?后面再详细分析。
注意,修改完毕后,一定点击保存按钮。否则可能编译的还是未修改的代码。
1.3 编译
使用cmd命令打开命令行
然后通过cd 命令到alios-things目录下
cd alios-things
然后运行配置命令
aos make blink_demo@haas100 -c config
然后编译
aos make
编译成功的界面是下图这样的,如果编译不成功,请参考初学者入门阿里云Haas100开发板基本步骤
1.4 烧录
首先确保开发板供电,并连接Micro USB线缆到电脑,并保证USB驱动安装成功。
进入目录C:\Users\Administrator\AliOS-Things\platform\mcu\haas1000\release\write_flash_gui
找到烧录工具
双击打开
设置串口号
选择烧录
首先拔掉电源线,然后再插上
这时开始烧录,等待烧录完成后,点击停止即可。
2 编程效果
如下图所示,红框选中的LED间隔1秒闪烁
3.原理分析
3.1 硬件分析
为什么将GPIO_LED_IO修改为0x22就能让指定的LED闪烁,而不是全部一起闪烁?
我们看阿里云的官方文档,这5个LED的引脚编号是40 41 36 35 34
https://help.aliyun.com/document_detail/184426.html?spm=a2c4g.11186623.6.692.2cfc5186bqGYXP
用十六进制来表示它们,就分别是 0x28(40 LED1) 0x29(41 LED2) 0x24(36 LED3) 0x23(35 LED4) 0x22(34 LED5)
经过测试,LED1(0x28)编程之后不能用(测试2遍,原因待定),LED编号标注如下:
3.2软件分析
例程中的闪烁是通过hal_gpio_output_toggle函数实现的,toggle的英文意思是“切换”。
函数的原型位于C:\Users\Administrator\AliOS-Things\platform\mcu\haas1000\hal
HAL的意思是硬件抽象层(Hardware Abstraction Layer)
gpio.c文件的内容如下图,这个文件还没有直接操作gpio,还调用了硬件驱动才完成硬件的操作。
4.结论
本例中并没有采用阿里云官方文档中推荐的 application/example/helloworld_demo/appdemo.c,而是采用了blink_demo,目的就是能够将GPIO的操作分析的更深入一些。HaaS100硬件资源丰富,掌握了一个简单的GPIO操作,就为操作其他硬件奠定了基础。
其他辅助文档请参阅
初学者入门阿里云Haas100开发板基本步骤
阿里云HaaS100物联网开发板学习笔记(一)硬件资源介绍