HarmonyOS IoT设备开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 使用GPIO模块输出高/低电平

本节将会介绍如何使用 HarmonyOS IoT 硬件子系统的 GPIO 模块的相关API,控制核心板上可编程LED灯亮或灭。

2.2.1 GPIO简介

GPIO是General Purpose Input/Output的英文缩写。Hi3861芯片内部包含了GPIO模块,用于实现芯片引脚上的数字输入、输出功能。所谓的数字输入、输出,是指状态只能是0或1两种状态,通常使用低电平表示0,高电平表示1。

2.2.2 HarmonyOS IoT硬件子系统的GPIO模块与输出相关的API

HarmonyOS IoT 硬件子系统提供了控制外设硬件的应用程序编程接口(Application Programming Interface,API)。其中,GPIO模块的相关API可用于控制芯片引脚的数字输入和数字输出。GPIO模块与输出相关的API和功能描述见表2-1。

表2-1

2.2.3 核心板可编程LED灯部分的原理图说明

核心板可编程LED灯部分的原理如图2-9所示。

图2-9

在原理图中,J 3是两根排针,默认由跳帽连接,是导通状态的,可视为直连状态的。LED1即核心板可编程 LED灯,它的一端通过排针 J3和主控芯片GPIO09引脚连接,另一端通过电阻R6连接到3V3电源。

由于LED1和主控芯片GPIO09引脚相连,因此主控芯片GPIO09引脚输出不同电平即可控制 LED1 的状态。结合原理图分析可知,主控芯片 GPIO09引脚状态和LED1状态的对应关系见表2-2。

表2-2

2.2.4 通过GPIO模块控制LED灯亮和灭

1.创建led.c文件

在 OpenHarmony 源代码的 applications/sample/wifi-iot/app/目录下创建led_demo目录,在该目录下创建名为led.c的文件,内容如下:

以上代码的部分代码说明如下。

(1)IoSetFunc 函数用于设置引脚功能(Hi3861 芯片的外设接口较多,引脚数量较少,因此存在部分引脚有多个功能的情况),Hi3861引脚功能复用表见附录E。

(2)GpioSetOutputVal 函数用于设置引脚的输出状态。函数的第二个参数使用的枚举WIFI_IOT_GPIO_VALUE0和WIFI_IOT_GPIO_VALUE1对应的值分别为0和1,直接使用0或1程序也同样可以运行。

(3)osThreadNew函数用于创建线程,细节可参考第7章。

2.创建BUILD.gn文件

在applications/sample/wifi-iot/app/led_demo目录下,创建BUILD.gn文件,将内容填充为:

在该BUILD.gn文件中,定义了一个名为“led_demo”的静态库,同时指定了编译该静态库所需的源代码文件列表和包含目录列表。

3.编译led.c文件

在创建完led.c和BUILD.gn文件后,按以下步骤进行编译:

(1)修改 applications/sample/wifi-iot/app 目录下的 BUILD.gn 文件,将其中的“startup”替换为“led_demo”,修改后的主要内容如下:

(2)在 OpenHarmony 源代码的顶层目录下,执行 python build.py wifiiot命令。

(3)一段时间后,若终端输出“BUILD SUCCESS”,则表示编译成功。

在编译成功后,在out/wifiiot子目录下可以找到编译生成的二进制文件。

4.烧录和运行

在编译成功后,即可将编译生成的二进制文件烧录到开发板,具体的操作步骤参考2.1.3节的相关描述。

在烧录完成后,按下复位按键,你将会看到主板上的LED灯开始闪烁。