概述
OpenHarmony WLAN模組基于Hi3861平臺(tái)提供了豐富的外設(shè)操作能力,包含I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。本文介紹如何通過調(diào)用OpenHarmony的NDK接口,實(shí)現(xiàn)對GPIO控制,達(dá)到LED閃爍的效果。其他的IOT外設(shè)控制,開發(fā)者可根據(jù)API指導(dǎo)文檔完成,此處不逐一介紹。
開發(fā)
- 請先完成[輕量系統(tǒng)快速入門]
LED控制參考示例存放于applications/sample/wifi-iot/app/iothardware/led_example.c文件中。 - 實(shí)現(xiàn)IOT外設(shè)控制,首先需要通過查閱原理圖明確接線關(guān)系。經(jīng)過查閱,hispark pegasus的LED與芯片的9號管腳相連。
鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
#define LED_TEST_GPIO 9
說明: 開發(fā)板原理圖,請開發(fā)者聯(lián)系Hi3861購買渠道客服獲取。
- 使用GPIO前,需要完成GPIO管腳初始化,明確管腳用途,并創(chuàng)建任務(wù),使LED周期性亮滅,達(dá)到閃爍的效果。
static void LedExampleEntry(void) { osThreadAttr_t attr; /* 管腳初始化 */ IoTGpioInit(LED_TEST_GPIO); /* 配置9號管腳為輸出方向 */ IoTGpioSetDir(LED_TEST_GPIO, IOT_GPIO_DIR_OUT); attr.name = "LedTask"; attr.attr_bits = 0U; attr.cb_mem = NULL; attr.cb_size = 0U; attr.stack_mem = NULL; attr.stack_size = LED_TASK_STACK_SIZE; attr.priority = LED_TASK_PRIO; /* 啟動(dòng)任務(wù) */ if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) { printf("[LedExample] Failed to create LedTask!n"); } }
- 在循環(huán)任務(wù)中通過周期性亮滅形式實(shí)現(xiàn)LED閃爍。
static void *LedTask(const char *arg) { (void)arg; while (1) { switch (g_ledState) { case LED_ON: IoTGpioSetOutputVal(LED_TEST_GPIO, 1); usleep(LED_INTERVAL_TIME_US); break; case LED_OFF: IoTGpioSetOutputVal(LED_TEST_GPIO, 0); usleep(LED_INTERVAL_TIME_US); break; case LED_SPARK: IoTGpioSetOutputVal(LED_TEST_GPIO, 0); usleep(LED_INTERVAL_TIME_US); IoTGpioSetOutputVal(LED_TEST_GPIO, 1); usleep(LED_INTERVAL_TIME_US); break; default: usleep(LED_INTERVAL_TIME_US); break; } } }
- 在代碼最下方,使用OpenHarmony啟動(dòng)恢復(fù)模塊接口SYS_RUN()啟動(dòng)業(yè)務(wù)。(SYS_RUN定義在ohos_init.h文件中)
SYS_RUN(LedExampleEntry);
- 修改applications/sample/wifi-iot/app/BUILD.gn文件,使led_example.c參與編譯。
import("http://build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "iothardware:led_example" ] }
驗(yàn)證
編譯過程請參考[輕量系統(tǒng)快速入門的編譯章節(jié)],燒錄過程請參考[輕量系統(tǒng)快速入門的燒錄章節(jié)](。
完成以上兩步后,按下RST鍵復(fù)位模組,可發(fā)現(xiàn)LED在周期性閃爍,與預(yù)期相符,驗(yàn)證完畢。
圖 1 LED閃爍圖
審核編輯 黃宇
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660553 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42805 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3713瀏覽量
16254
發(fā)布評論請先 登錄
相關(guān)推薦
評論