电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
HarmonyOS实现点亮LED
分 享
扫描二维码分享
HarmonyOS实现点亮LED
Harmony
鸿蒙
嵌入式从0到1
关注
发布时间: 2020-10-19
丨
阅读: 1961
### 新增业务 #### 新建工程 * 创建工程目录 在 applications\sample\wifi-iot\app\ 文件夹下新建一个文件夹LEDDemo,用于存放新增业务的文件。 ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17096_1.png) * 添加业务文件 在LEDDemo文件夹下新建两个文件: BUILD.gn 和 led_example.c 。 ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17102_1.png) 其中BUILD.gn为编译脚本,led_example.c 为业务逻辑代码所在文件,具体目录结构如下: ``` . └── applications └── sample └── wifi-iot └── app │── LEDDemo │ │── led_example.c │ └── BUILD.gn └── BUILD.gn ``` * 编写业务代码 在led_example.c中新建业务入口函数LedExampleEntry,并实现业务逻辑。并在代码最下方,使用 HarmonyOS启动恢复模块接口SYS_RUN()启动业务,被SYS_RUN() 宏设置的函数都将在系统初始化的时候被执行。(SYS_RUN定义在ohos_init.h文件中) ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17130_1-1024x373.png) 由原理图我们可以看出,GPIO09引脚输出低电平的时候,LED1亮,GPIO09引脚输出高电平的时候,LED1灭。 ```C #include
#include
#include "ohos_init.h" #include "cmsis_os2.h" #include "wifiiot_gpio.h" #include "wifiiot_gpio_ex.h" #define LED_ON_TIME_US 2000000 #define LED_OFF_TIME_US 1000000 static void LedExampleEntry(void) { //GPIO引脚初始化 GpioInit(); //设置管脚功能为GPIO IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO); //设置GPIO引脚方向为输出 GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT); while (1) { //设置GPIO09输出为低电平 GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0); //打印输出日志 printf("[DEMO] LED on.\n"); //延时一定时间,即亮灯的持续时间 usleep(LED_ON_TIME_US); //设置GPIO09输出为高电平 GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1); //打印输出日志 printf("[DEMO] LED off.\n"); //延时一定时间,即灭灯的持续时间 usleep(LED_OFF_TIME_US); } } SYS_RUN(LedExampleEntry); ``` * 新增业务中的BUILD.gn文件 编写用于将业务构建成静态库的BUILD.gn文件。BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,需由开发者完成填写。以LEDDemo新增业务为例,需要创建./applications/sample/wifi-iot/app/LEDDemo/BUILD.gn,并完成如下配置。 ```C static_library("xiaoha") { sources = [ "led_example.c" ] include_dirs = [ "//utils/native/lite/include", "//kernel/liteos_m/components/cmsis/2.0", "//base/iot_hardware/interfaces/kits/wifiiot_lite", ] } ``` ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17134_1.png) * static_library中指定业务模块的编译结果,开发者根据实际情况完成填写,最后编译完成,在 /home/harmony/harmony/code/code-1.0/out/wifiiot/libs/ 目录下可以看到生成的库文件,本实例编译之后生成的静态库文件为libxiaoha.a。 ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17136_1-1024x489.png) * sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。 * include_dirs中指定source所需要依赖的.h文件路径。 * app目录下BUILD.gn文件 指定需参与构建的特性模块。配置./applications/sample/wifi-iot/app/BUILD.gn文件,在features字段中增加索引,使目标模块参与编译。features字段指定业务模块的路径和目标,以LEDDemo举例,features字段配置如下。 ```C import("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ #"startup", "LEDDemo:xiaoha" ] } ``` ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17132_1-1024x495.png) * LEDDemo是相对路径,指向./applications/sample/wifi-iot/app/LEDDemo/。 * xiaoha是目标,指向./applications/sample/wifi-iot/app/LEDDemo/BUILD.gn中的static_library("xiaoha")。 * **#"startup"** 在.gn文件中#号代表注释的意思。 * 编译 在鸿蒙操作系统代码根目录下,在终端中输入“**python build.py wifiiot**”命令启动编译。 ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17124_1-1024x636.png) 终端中出现如下信息编译表示成功: ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17126_1.png) * 下载并更新固件 将“\\out\\wifiiot\\Hi3861_wifiiot_app_allinone.bin”文件使用DecEco工具烧入Hi3861最小核心板。 ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17138_1-1024x399.png) 编译及下载更新固件的方法请参考如下网文: [**鸿蒙系统固件编译及烧写——通过AT命令完成WLAN模组Hi3861联网**](https://mp.weixin.qq.com/s/S_oI5iPG8G1xcg-DNAJeDw) ### 结果展示 按下核心板的RST键,复位模块,我们可以看到核心板上的蓝色LED亮2秒,灭1秒,交替进行,串口输出如下: ![](http://www.xiaohage.com/wp-content/uploads/2020/10/17128_1.png) ### 参考阅读 * [**华为鸿蒙HarmonyOS Wi-Fi IoT开发套件开箱及简介**](https://mp.weixin.qq.com/s/gT_6PiyoepMpb_BUNT0gqw) * [**鸿蒙开发环境搭建、源码下载和编译**](https://mp.weixin.qq.com/s/2krGrPdNz8U0GvPlIjDOHQ) * [**HarmonyOS智能设备开发工具—DevEco Device Tool 安装配置**](https://mp.weixin.qq.com/s/C8yk8s3ega6T6iC_Abj7TQ) * [**安装并配置Samba服务器--将HarmonyOS的文件映射到Windows 中**](https://mp.weixin.qq.com/s/op4yqTDwDbdWTXbXb2z2Bg) * [**鸿蒙系统固件编译及烧写——通过AT命令完成WLAN模组Hi3861联网**](https://mp.weixin.qq.com/s/S_oI5iPG8G1xcg-DNAJeDw)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
嵌入式从0到1
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交