概述
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("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "iothardware:led_example" ] }
验证
编译过程请参考[轻量系统快速入门的编译章节],烧录过程请参考[轻量系统快速入门的烧录章节](。
完成以上两步后,按下RST键复位模组,可发现LED在周期性闪烁,与预期相符,验证完毕。
图 1 LED闪烁图
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
led
+关注
关注
240文章
23025浏览量
656159 -
开发板
+关注
关注
25文章
4872浏览量
96971 -
鸿蒙
+关注
关注
57文章
2301浏览量
42664 -
OpenHarmony
+关注
关注
25文章
3628浏览量
16027
发布评论请先 登录
相关推荐
鸿蒙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)电路。支持,并配套提供开放、易用的
评论