概述
OpenHarmony WLAN模組基于Hi3861平臺提供了豐富的外設操作能力,包含I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。本文介紹如何通過調用OpenHarmony的NDK接口,實現對GPIO控制,達到LED閃爍的效果。其他的IOT外設控制,開發者可根據API指導文檔完成,此處不逐一介紹。
開發
- 請先完成[輕量系統快速入門]
LED控制參考示例存放于applications/sample/wifi-iot/app/iothardware/led_example.c文件中。 - 實現IOT外設控制,首先需要通過查閱原理圖明確接線關系。經過查閱,hispark pegasus的LED與芯片的9號管腳相連。
鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
#define LED_TEST_GPIO 9
說明: 開發板原理圖,請開發者聯系Hi3861購買渠道客服獲取。
- 使用GPIO前,需要完成GPIO管腳初始化,明確管腳用途,并創建任務,使LED周期性亮滅,達到閃爍的效果。
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; /* 啟動任務 */ if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) { printf("[LedExample] Failed to create LedTask!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啟動恢復模塊接口SYS_RUN()啟動業務。(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" ] }
驗證
編譯過程請參考[輕量系統快速入門的編譯章節],燒錄過程請參考[輕量系統快速入門的燒錄章節](。
完成以上兩步后,按下RST鍵復位模組,可發現LED在周期性閃爍,與預期相符,驗證完畢。
圖 1 LED閃爍圖
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
led
+關注
關注
242文章
23277瀏覽量
660893 -
開發板
+關注
關注
25文章
5050瀏覽量
97483 -
鴻蒙
+關注
關注
57文章
2352瀏覽量
42859 -
OpenHarmony
+關注
關注
25文章
3722瀏覽量
16321
發布評論請先 登錄
相關推薦
鴻蒙OpenHarmony【集成三方SDK】 (基于Hi3861開發板)
OpenHarmony致力于打造一套更加開放完善的IoT生態系統,為此OpenHarmony規劃了一組目錄,用于將各廠商的SDK集成到OpenHarmony中。本文檔基于Hi3861
如何使用 HiBurn 工具燒錄鴻蒙的 .bin 文件到 Hi3861 開發板
鴻蒙官方文檔的Hi3861開發板第一個示例程序中描述了如何使用 DevEco Device Tool 工具燒錄二進制文件到 Hi3861 開發板
自制Hi3861開發板(附原理圖和電路圖)
OpenHarmony的發展已經進入了新的階段,逐步把重點向富設備開發方向。OpenHarmony 3.x的各大特性也是針對富設備來的,但是仍然支持輕量設備,如Hi3861芯片設備。于
潤開鴻Hi3861開發板介紹
Hi3861開發板是一片大約2cm*5cm大小的開發板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路。支持
鴻蒙OpenHarmony南向:【Hi3861開發板介紹】
Hi3861開發板是一片大約2cm*5cm大小的開發板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路。支持,并配套提供開放、易用的
評論