- HarmonyOS IoT設(shè)備開發(fā)實(shí)戰(zhàn)
- 江蘇潤和軟件股份有限公司
- 958字
- 2021-10-15 16:57:43
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燈開始閃爍。
- 光網(wǎng)絡(luò)評估及案例分析
- 物聯(lián)網(wǎng)檢驗(yàn)檢測技術(shù)
- OpenLayers Cookbook
- Learning Karaf Cellar
- 物聯(lián)網(wǎng)安全技術(shù)
- 中國互聯(lián)網(wǎng)發(fā)展報(bào)告2018
- Building RESTful Web services with Go
- 基于性能的保障理論與方法
- Getting Started with Memcached
- 云計(jì)算技術(shù)與標(biāo)準(zhǔn)化
- 全聯(lián)網(wǎng)標(biāo)識(shí)服務(wù)
- 精通SEO:100%網(wǎng)站流量提升密碼
- 區(qū)塊鏈技術(shù)與應(yīng)用:打造分布式商業(yè)新生態(tài)
- 新IP:面向泛在全場景的未來數(shù)據(jù)網(wǎng)絡(luò)
- 5G新型多址技術(shù)