官术网_书友最值得收藏!

2.2 使用GPIO模塊輸出高/低電平

本節(jié)將會(huì)介紹如何使用 HarmonyOS IoT 硬件子系統(tǒng)的 GPIO 模塊的相關(guān)API,控制核心板上可編程LED燈亮或滅。

2.2.1 GPIO簡介

GPIO是General Purpose Input/Output的英文縮寫。Hi3861芯片內(nèi)部包含了GPIO模塊,用于實(shí)現(xiàn)芯片引腳上的數(shù)字輸入、輸出功能。所謂的數(shù)字輸入、輸出,是指狀態(tài)只能是0或1兩種狀態(tài),通常使用低電平表示0,高電平表示1。

2.2.2 HarmonyOS IoT硬件子系統(tǒng)的GPIO模塊與輸出相關(guān)的API

HarmonyOS IoT 硬件子系統(tǒng)提供了控制外設(shè)硬件的應(yīng)用程序編程接口(Application Programming Interface,API)。其中,GPIO模塊的相關(guān)API可用于控制芯片引腳的數(shù)字輸入和數(shù)字輸出。GPIO模塊與輸出相關(guān)的API和功能描述見表2-1。

表2-1

2.2.3 核心板可編程LED燈部分的原理圖說明

核心板可編程LED燈部分的原理如圖2-9所示。

圖2-9

在原理圖中,J 3是兩根排針,默認(rèn)由跳帽連接,是導(dǎo)通狀態(tài)的,可視為直連狀態(tài)的。LED1即核心板可編程 LED燈,它的一端通過排針 J3和主控芯片GPIO09引腳連接,另一端通過電阻R6連接到3V3電源。

由于LED1和主控芯片GPIO09引腳相連,因此主控芯片GPIO09引腳輸出不同電平即可控制 LED1 的狀態(tài)。結(jié)合原理圖分析可知,主控芯片 GPIO09引腳狀態(tài)和LED1狀態(tài)的對應(yīng)關(guān)系見表2-2。

表2-2

2.2.4 通過GPIO模塊控制LED燈亮和滅

1.創(chuàng)建led.c文件

在 OpenHarmony 源代碼的 applications/sample/wifi-iot/app/目錄下創(chuàng)建led_demo目錄,在該目錄下創(chuàng)建名為led.c的文件,內(nèi)容如下:

以上代碼的部分代碼說明如下。

(1)IoSetFunc 函數(shù)用于設(shè)置引腳功能(Hi3861 芯片的外設(shè)接口較多,引腳數(shù)量較少,因此存在部分引腳有多個(gè)功能的情況),Hi3861引腳功能復(fù)用表見附錄E。

(2)GpioSetOutputVal 函數(shù)用于設(shè)置引腳的輸出狀態(tài)。函數(shù)的第二個(gè)參數(shù)使用的枚舉WIFI_IOT_GPIO_VALUE0和WIFI_IOT_GPIO_VALUE1對應(yīng)的值分別為0和1,直接使用0或1程序也同樣可以運(yùn)行。

(3)osThreadNew函數(shù)用于創(chuàng)建線程,細(xì)節(jié)可參考第7章。

2.創(chuàng)建BUILD.gn文件

在applications/sample/wifi-iot/app/led_demo目錄下,創(chuàng)建BUILD.gn文件,將內(nèi)容填充為:

在該BUILD.gn文件中,定義了一個(gè)名為“l(fā)ed_demo”的靜態(tài)庫,同時(shí)指定了編譯該靜態(tài)庫所需的源代碼文件列表和包含目錄列表。

3.編譯led.c文件

在創(chuàng)建完led.c和BUILD.gn文件后,按以下步驟進(jìn)行編譯:

(1)修改 applications/sample/wifi-iot/app 目錄下的 BUILD.gn 文件,將其中的“startup”替換為“l(fā)ed_demo”,修改后的主要內(nèi)容如下:

(2)在 OpenHarmony 源代碼的頂層目錄下,執(zhí)行 python build.py wifiiot命令。

(3)一段時(shí)間后,若終端輸出“BUILD SUCCESS”,則表示編譯成功。

在編譯成功后,在out/wifiiot子目錄下可以找到編譯生成的二進(jìn)制文件。

4.燒錄和運(yùn)行

在編譯成功后,即可將編譯生成的二進(jìn)制文件燒錄到開發(fā)板,具體的操作步驟參考2.1.3節(jié)的相關(guān)描述。

在燒錄完成后,按下復(fù)位按鍵,你將會(huì)看到主板上的LED燈開始閃爍。

主站蜘蛛池模板: 武鸣县| 岐山县| 荥经县| 察雅县| 秀山| 龙游县| 邵东县| 通山县| 名山县| 广水市| 江源县| 洞口县| 陆河县| 泸州市| 禄丰县| 贞丰县| 宕昌县| 勐海县| 贵港市| 郸城县| 山东省| 诏安县| 辉南县| 富源县| 广州市| 合作市| 寿光市| 同心县| 西华县| 称多县| 望奎县| 河南省| 武强县| 昭觉县| 阿巴嘎旗| 息烽县| 清徐县| 辽宁省| 曲靖市| 修文县| 白玉县|