OHOS3.0标准系统编写C程序控制LED 原创 精华
前言:
OpenHarmony分为轻量系统、小型系统、标准系统,目前对应LiteOS-M、LiteOS-A、Linux内核。但好像并没有说一定是按照使用内核来划分。我们这里姑且先这么区分。本文使用的是比较新的OpenHarmony 3.0 LTS版本,Linux内核,编译标准系统。官方文档已经说明了,如何使用DevEco Studio开发hap包,并运行在开发板,但是ACE框架能力有限。设备硬件开发还是需要C,所以这篇文章,将在标准系统下编译C控制Hi3516开发板的LED闪烁。
1.环境准备
3.0源码下载:
区别于2.0需要安装ruby,其他基本都一样。
编译命令
2.编写helloworld.c
在applications\standard目录下新建一个app目录来存放.c的业务代码。比如applications\standard\app\helloworld.c
内容容下:
然后在当前目录新建编译脚本BUILD.gn
内容如下:
然后添加到编译框架applications\standard\hap\ohos.build
增加如下内容。
最后执行编译命令即可,开发板使用的是Hi3516,在不指定out目录时,缺省生成在/system/lib64或/system/lib下。
3.点亮开发板LED
能打印helloworld说明环境是没问题的,接下来尝试点亮开发板的LED。查看Hi3516DV300原理图,请添加链接描述
Hi3516DV300共有4层板,由原理图可知:最上层板的红外补光灯接在GPIO5_1,绿色LED指示灯在GPIO2_3,核心板的红色LED在GPIO3_4。
确定GPIO管脚号
不同SOC芯片由于其GPIO控制器型号、参数、以及控制器驱动的不同,GPIO管脚号的换算方式不一样。
-
Hi3516DV300
控制器管理12组GPIO管脚,每组8个。
GPIO号 = GPIO组索引 (0~11) * 每组GPIO管脚数(8) + 组内偏移
举例:GPIO10_3的GPIO号 = 10 * 8 + 3 = 83
-
Hi3518EV300
控制器管理10组GPIO管脚,每组10个。
GPIO号 = GPIO组索引 (0~9) * 每组GPIO管脚数(10) + 组内偏移
举例:GPIO7_3的GPIO管脚号 = 7 * 10 + 3 = 73
由此可以得出:
然后新建applications\standard\app\ledtest.c
内容如下
将业务代码添加到BUILD.gn
applications\standard\hap\ohos.build
之后将程序烧录到开发板,执行./system/bin/ledtest
就可以看到LED闪烁起来了。
本来是打算使用鸿蒙的GPIO接口来实现这个功能的,不过调试了很久也没调通,最后无奈还是用的system自己实现的GPIO函数。有没使用OpenHarmony的GPIO成功的小伙伴可以留言一起交流啊。
每一次新版本发布都能见到楼主的文章。
我希望拥有我们自己的芯片,关于碳基芯片,我希望可以用字迹临摹的方式入手
厉害厉害!
开发板是hi3516dv300,在3.1版的源码上编译,然后烧录到开发版中,找不到对应的bin下面的helloworld和ledtest