![HarmonyOS IoT设备开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/36/40795036/b_40795036.jpg)
外设控制篇
第2章 用HarmonyOS控制I/O设备
2.1 从编写Hello World开始
本节将会介绍如何使用C语言为开发板编写一个Hello World程序,如何将编译好的二进制文件烧录到开发板上,以及如何通过串口查看程序的输出结果。
2.1.1 编写Hello World程序源代码
1.创建名为hello.c的文件
在OpenHarmony源代码的applications/sample/wifi-iot/app/startup目录下,创建名为hello.c的文件:
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_50_1.jpg?sign=1738925460-UmPR095I7wXFXGz18tRZAKMOduEYOk8z-0-15f2d2825c5c1de7badf330a9fde39e4)
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_51_1.jpg?sign=1738925460-fffaCVW9yRkZoxGWyEoIK7Sbifw4sNRq-0-783bf8103f4a21717323b54f5cfcfe3e)
在代码实例中,ohos_init.h 是 HarmonyOS 特有的头文件。SYS_RUN 是ohos_init.h中定义的一个宏,它的作用是让一个函数在系统启动时自动执行。
2.修改BUILD.gn构建脚本
修改OpenHarmony源代码的applications/sample/wifi-iot/app/startup目录下的BUILD.gn文件,将内容修改为:
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_51_2.jpg?sign=1738925460-Uw1PYlAUIfWAGrCNd6DInpOzSF6Dx2Ra-0-89a5b9c1cb386cbc9bd11a34a61b7dae)
2.1.2 将源代码编译成二进制文件
在OpenHarmony源代码的顶层目录下,执行python build.py wifiiot命令,开始编译。在编译完成后,二进制文件将会生成到out/wifiiot子目录下。
2.1.3 将二进制文件烧录到开发板
1.为HUAWEI DevEco Device Tool配置开发板
在第一次烧录之前,需要先配置开发板。配置开发板的操作步骤如下。
(1)单击VS Code编辑器底部状态栏的“开发板:None”按钮,打开开发选择下拉菜单,如图2-1所示(或单击图中左侧标记1处的“DEVECO TASKS”菜单,再单击图中标记2处的“配置”按钮)。
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_52_1.jpg?sign=1738925460-zoIKXvWoIt5ZH7ZYfwnE95C8tvrZ7MLf-0-496bd4ba763baf3baaa7b8fe8d671de4)
图2-1
在弹出的下拉菜单中选择“Hi3861”选项,进入Hi3861开发板配置页面,如图2-2所示。
(2)在 Hi3861 开发板配置页面中,单击“烧录”按钮,进入烧录配置页面,如图2-3所示。
(3)在烧录配置页面的“端口号”下拉菜单中,根据设备管理器中显示的串口设备号选择相应的串口。例如,图2-3中的“COM9”。
(4)把右侧的滚动条下拉到“烧录文件”选区,单击右侧的文件图标选择待烧录文件。在弹出的文件选择对话框中,选择此前编译生成的Hi3861_wifiiot_app_allinone.bin 文件,并在“方式”下拉菜单中选择“HiBurn”选项,如图2-4所示。
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_53_1.jpg?sign=1738925460-iq4VySJDJGBlkpRYhO6wYCuRQMPOiM8Z-0-7cb0b2228b247255d4bbe3ac1139a97d)
图2-2
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_53_2.jpg?sign=1738925460-Mk3RRYGFyb8WqqTWWFI7pNOa0ByFSOsL-0-5574cfd74d9f83d5f1a9ce8309277c5a)
图2-3
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_54_1.jpg?sign=1738925460-nV3mmbzPs3S7FNQAgmcvHI2Fc3we7yjh-0-4844dadb2fc28e1544c7c4adab4982b8)
图2-4
2.使用HUAWEI DevEco Device Tool烧录二进制文件到开发板
使用HUAWEI DevEco Device Tool烧录二进制文件到开发板的具体操作步骤如下。
(1)单击VS Code编辑器底部状态栏的“烧录”按钮,此按钮被按下后,终端窗口将会输出一些提示信息,如图2-5所示。
(2)在终端窗口输出“Please tap the Reset-Key to reset the board”后,按下核心板的复位按钮,终端窗口将会有烧录进度和过程日志输出。
(3)一段时间后,若终端窗口输出“Succeed to load and write image”,则表示烧录成功,如图2-6所示。
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_55_1.jpg?sign=1738925460-b4nO32tg01UrY2sQNAnod5889B7bj1Gp-0-071d7a8420d9d2b94f823442b7adefac)
图2-5
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_55_2.jpg?sign=1738925460-1GfzTv164KW6eB7PhXE2szYa7i0sMCfr-0-49ee485829f3d88405272dbcf016379d)
图2-6
2.1.4 通过“串口”查看程序的运行结果
在烧录成功后,使用串口调试工具或HUAWEI DevEco Device Tool集成的串口工具均可以查看程序的运行结果。使用串口助手查看日志的方法见1.7节。
使用HUAWEI DevEco Device Tool查看串口日志的操作步骤如下。
(1)单击VS Code编辑器底部状态栏的“串口”按钮,终端窗口会输出打开串口相关的提问。
(2)在“Pick the one for openning:”提问后,输入开发板实际的串口号,例如COM9。
(3)按照实际的串口设备参数输入接下来的几个参数,在“Set endline characters as'\r\n'?”提问后输入1,如图2-7所示。
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_56_1.jpg?sign=1738925460-uAIzZjmqx8mHDYQxkA86a0scz0mRHEHW-0-d3a98e6bd299542775e51ca2ceb99995)
图2-7
(4)按下开发板主板上的复位按键,让程序重新开始运行。
此时,会看到终端窗口有日志输出,如图2-8所示。
注意:下次烧录前,需要关闭终端窗口集成的串口工具,否则会因为串口调试窗口占用串口设备,导致烧录任务无法成功。
![](https://epubservercos.yuewen.com/E6CF3C/21190706008522906/epubprivate/OEBPS/Images/41175_57_1.jpg?sign=1738925460-bLMClbU1km7YdJhPGK8oXNeNfyekfhKX-0-a22574f4e5ac0fe5430b8c87ff1eabbc)
图2-8