鸿蒙OpenHarmony【LED外设控制】 (基于Hi3861开发板)

概述

OpenHarmony WLAN模组基于Hi3861平台提供了丰富的外设操作能力,包含I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。本文介绍如何通过调用OpenHarmony的NDK接口,实现对GPIO控制,达到LED闪烁的效果。其他的IOT外设控制,开发者可根据API指导文档完成,此处不逐一介绍。

开发

  1. 请先完成轻量系统快速入门。

    LED控制参考示例存放于applications/sample/wifi-iot/app/iothardware/led\_example.c文件中。

  2. 实现IOT外设控制,首先需要通过查阅原理图明确接线关系。经过查阅,hispark pegasus的LED与芯片的9号管脚相连。

鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

搜狗高速浏览器截图20240326151547.png

define LED_TEST_GPIO 9

  说明:  开发板原理图,请开发者联系Hi3861购买渠道客服获取。
  1. 使用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");}
    }

  2. 在循环任务中通过周期性亮灭形式实现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;}}
    }

  3. 在代码最下方,使用OpenHarmony启动恢复模块接口SYS\_RUN()启动业务。(SYS\_RUN定义在ohos\_init.h文件中)

    SYS_RUN(LedExampleEntry);

  4. 修改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闪烁图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谁说快是转瞬即逝,PUMA说快是永恒

巴黎奥运会、欧洲杯、美洲杯......2024年可以说是名副其实的体育大年。在各种全球体育盛事营造的浓厚体育氛围当中,各大体育品牌纷纷开始发力。 4月10日,全球领先运动品牌PUMA率先发布了其为本届奥运会准备的17套奥运装配,包括瑞士、瑞典等国…

Linux多进程(一)创建进程与进程控制

一、进程状态 进程一共有五种状态分别为:创建态,就绪态,运行态,阻塞态(挂起态),退出态(终止态)其中创建态和退出态维持的时间是非常短的,稍纵即逝。主要是就绪态, 运行态, 挂起态三者之间的状态切换。 就绪…

小程序使用阿里巴巴矢量图标库

一、登录官网 www.iconfont.cn 二、在搜索框中搜索想要的图标,将鼠标移动到图标上会看到三个标记 可以使用下载,直接使用: 可以使用css文件使用: 首先点击购物车样式的选项,而后点击下图位置: 点击自己创…

Flume的安装及使用

Flume的安装及使用 文章目录 Flume的安装及使用Flume的安装1、上传至虚拟机,并解压2、重命名目录,并配置环境变量3、查看flume版本4、测试flume5、flume的使用 Flume的安装 1、上传至虚拟机,并解压 tar -zxvf apache-flume-1.9.0-bin.tar.g…

Git TortoiseGit 详细安装使用教程

前言 Git 是一个免费的开源分布式版本控制系统,是用来保存工程源代码历史状态的命令行工具,旨在处理从小型到非常大型的项目,速度快、效率高。《请查阅Git详细说明》。TortoiseGit 是 Git 的 Windows Shell 界面工具,基于 Tortoi…

05_FreeRTOS信号量

信号量 信号量信号量简介常用信号量API函数 信号量 信号量简介 信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中&#xf…

wireshark RTP分析参数

主要看丢弃和Delta, 丢弃就是丢掉的udp包,所占的比率 Delta是当前udp包接收到的时间减去上一个udp包接收到的时间 根据载荷可以知道正确的delta应该是多少,比如G711A,ptime20,那么delta理论上应该趋近于20. 这里的de…

python创建线程和结束线程

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 python创建线程和结束线程 在 Python 中,线程是一种轻量级的执行单元&#xff…

进程概念(进程第1篇)【Linux复习篇】

目录 1、冯诺依曼体系结构怎么画?中央处理器是什么?存储器是什么?每个部分有什么作用? 2、什么是操作系统? 3、什么叫进程?操作系统如何管理进程的? 4、怎么查看进程? 5、C语言…

基于MLP算法实现交通流量预测(Pytorch版)

在海量的城市数据中,交通流量数据无疑是揭示城市运行脉络、洞察出行规律的关键要素之一。实时且精准的交通流量预测不仅能为交通规划者提供科学决策依据,助力提升道路使用效率、缓解交通拥堵,还能为公众出行提供参考,实现个性化导…

指令和界面【Linux】

指令和界面 前言一、指令 vs 界面交互的需求满足需求的第一阶段——指令满足需求的第二阶段-界面时间 二、指令和界面交互区别为什么要学命令行总结 前言 Linux操作系统提供了丰富的命令行界面和图形用户界面工具,用户可以根据自己的需求选择适合的界面进行操作。命…

【好书推荐7】《机器学习平台架构实战》

【好书推荐7】《机器学习平台架构实战》 写在最前面《机器学习平台架构实战》编辑推荐内容简介作者简介目  录前  言本书读者内容介绍充分利用本书下载示例代码文件下载彩色图像本书约定 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光&…

论文阅读:BEVBert: Multimodal Map Pre-training for Language-guided Navigation

BEVBert:语言引导导航的多模态地图预训练 摘要 现存的问题:目前大多数现有的预训练方法都采用离散的全景图来学习视觉-文本关联。这要求模型隐式关联全景图中不完整、重复的观察结果,这可能会损害智能体的空间理解。 本文解决方案&#xf…

TikTok账号0播放是限流了吗?想要播放破万,试试这些方法!

前言 账号0播放问题,想必困扰着许多的TikTok运营同学。精心制作的短视频发布在TikTok,不是零播放,就是仅自己可见。那么,TikTok账号0播放是不是真的意味着被限流了呢?本篇总结了账号0播放的原因并附上解决方案&#xf…

[Flutter3] Json转dart模型举例

记录一下 Android studio plugin -> FlutterJsonBeanFactory 处理json转dart 模型 案例 json字符串, 一个 response的data返回数据 {"code":1,"msg":"\u64cd\u4f5c\u6210\u529f","data":{"list":{"id":"8…

SwiftUI 5.0(iOS 17.0)触摸反馈“震荡波”与触发器模式趣谈

概览 要想创作出一款精彩绝伦的 App,绚丽的界面和灵动的动画并不是唯一吸引用户的要素。有时我们还希望让用户真切的感受到操作引发的触觉反馈,直击使用者的灵魂。 所幸的是新版 SwiftUI 原生提供了实现触觉震动反馈的机制。在介绍它之后我们还将进一步…

等保测评之主机测评详解(二级)

等保测评之主机测评详解(二级)服务器——Windows 身份鉴别: 测评项a): a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 整改方…

antd中Upload上传图片宽高限制以及上传文件的格式限制

项目中有一个需求,要上传轮播图,且有尺寸要求,所以就需要在上传图片的时候进行尺寸限制,使用了Upload组件,需要在组件的beforeUpload方法中进行限制。 定义一个上传前的方法,并且添加一个图片尺寸获取的方…

【Redis】Zset 数据类型

文章目录 常用命令zaddzcard & zcountzrange & zrevrangezpopmax & bzpopmaxzpopmin & bzpopminzrank & zrevrankzscore & zremzremrangebyrank & zremrangebyscorezincrby 多个集合间的交互命令交集 & zinterstore并集 & sunionstore 内部…

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡 配置ssh远程连接docker1.端口映射2.配置ssh 在docker中使用nvidia显卡配置CUDA 注意:之前已经创建过容器的,需要打包成镜像,重新创建容器,因为要在创建…