鸿蒙系统控制LED的实现方法之经典
今天主要和大家聊一聊,如何使用国产鸿蒙操作系统来控制led硬件。
第一:国产鸿蒙系统简介
鸿蒙系统是基于微内核的新型分布式操作系统,为所有设备和场景提供全新的用户体验,并在场景体验上更加流畅,支持设备的无缝协作。它是一个全场景,面向未来的操作系统,可以安装在手机、手表、无人机等多种设备上。
鸿蒙的开发分为两个方向,南向和北向。北向主要指的是应用开发,应用开发有专用的IDE工具;采用的主流开发语言有:java ,js 等。南向主要指的是设备开发,有基于LiteOS微内核开发的,轻量级、功耗低,可以应用在智能设备上,并可以利用软总线连接。
第二:国产鸿蒙硬件分析
既然这次是聊一聊鸿蒙系统灯的控制,先来认识一下对应的GPIO。本次实验中的用到的Hi3861芯片内部包含了GPIO模块。该模块主要可以实现芯片引脚上的数字输入或输出功能。我们知道由于机器只能识别0和1的数字量,所以平常所说的GPIO口的输入输出状态指的就是0或1状态,也就是常说的0代表低电平,1代表高电平。
上面这个原理图看完有啥感受,一个字绝,是不是很清晰
。分析如下:
J3是两根排针,默认由跳帽连接,是导通状态的,可视为直连状态的。LEDI是核心板的可编程LED灯,它的一端通过排针J3和主控芯片GPIO09引脚连接,另一端通过电阻R6连接到3V3电源。
由于LED1和主控芯片GPI009引脚相连,因此主控芯片GPIO09引脚输出不同电平即可控制LED1的状态。结合原理图分析可知,主控芯片GPI009引脚状态和LED1状态的对应关系为低电平点亮,高电平熄灭。
第三:代码实现方法
鸿蒙IOT的硬件提供了控制外设的应用程序编程接口,通俗一点也是传说中的API,GPIO可以利用相关的API函数实现控制,主控代码如下所示:
#include <stdio.h>
#include <unistd.h>
#include "cmsis_os2.h"
#include "ohos_init.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#define LED_TASK_STACK_SIZE 1024
#define LED_TASK_PRIO 25
static void* GpioTask(const char* arg)
{
(void)arg;
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
while (1) {
printf(" LED_SPARK! \n");
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_VALUE0);
osDelay(50);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_VALUE1);
osDelay(50);
}
return NULL;
}
static void GpioExampleEntry(void)
{
osThreadAttr_t attr;
attr.name = "GpioTask";
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)GpioTask, NULL, &attr) == NULL) {
printf("[GpioExample] Falied to create GpioTask!\n");
}
}
SYS_RUN(GpioExampleEntry);
写到这里,本以为要结束了,其实万里长征才刚刚开始
。要想让代码运行起来,还需要对系统进行配置和编译如视频所示。
第四:效果演示
鸿蒙系统
鸿蒙系统控制LED的实现方法之经典相关推荐
- Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介、使用方法、经典案例之详细攻略
Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介.使用方法.经典案例之详细攻略 目录 *args和**kwargs(设计不同数量的参数函数)的简介 1 ...
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
Python语言学习之图表可视化:python语言中可视化工具包的简介.安装.使用方法.经典案例之详细攻略 目录 python语言中可视化工具包的简介 python语言中可视化工具包的安装 pytho ...
- Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
Graphviz:可视化工具Graphviz的简介.安装.使用方法.经典案例之详细攻略 目录 Graphviz的简介 Graphviz的安装 Graphviz的使用方法 Graphviz的经典案例 G ...
- java纪元时间_Java实现纪元秒和本地日期时间互换的方法【经典实例】
Java实现纪元秒和本地日期时间互换的方法[经典实例] 发布时间:2020-09-07 22:58:35 来源:脚本之家 阅读:71 作者:FrankYou 本文实例讲述了Java实现纪元秒和本地日期 ...
- [LED]如何配置LCD背光和LED,调试方法
[LED]如何配置LCD背光和LED,调试方法 [DESCRIPTION] 如何配置LCD背光和LED,调试方法 [SOLUTION] LCD背光和LED配置文件 alps/custom/<pr ...
- 如何更换安装鸿蒙系统,华为鸿蒙系统2.0如何进行安装?鸿蒙系统2.0安装方法详细介绍...
华为鸿蒙系统2.0如何进行安装?现在已经可以安装鸿蒙系统2.0,但是你不清楚安装,下面就让浏览器小编为大家带来,鸿蒙系统2.0安装方法详细介绍. 部分更新了华为鸿蒙OS用户表示,安卓和鸿蒙的应用软件都 ...
- 鸿蒙系统可以安装的浏览器,华为鸿蒙系统2.0如何进行安装?鸿蒙系统2.0安装方法详细介绍...
华为鸿蒙系统2.0如何进行安装?现在已经可以安装鸿蒙系统2.0,但是你不清楚安装,下面就让浏览器小编为大家带来,鸿蒙系统2.0安装方法详细介绍. 部分更新了华为鸿蒙OS用户表示,安卓和鸿蒙的应用软件都 ...
- ML之LIME:可解释性之SP-LIME的简介、原理、使用方法、经典案例之详细攻略
ML之LIME:可解释性之SP-LIME的简介.原理.使用方法.经典案例之详细攻略 目录 SP-LIME简介-Submodular Pick LIME子模挑选 1.Submodular优化过程 Sub ...
- LED广告牌制作方法
LED广告牌制作方法开始啦! LED广告牌制作方法 LED广告牌就是充分利用LED发光二极管的节能环保的特点,制作出五光十色的招牌,广告牌又名:LED电子灯箱,LED发光字,LED防水招牌, LE ...
最新文章
- 如何让 Mybatis 自动生成代码,提高开发效率
- linux中的fork函数详解
- 使用Blink SQL+UDAF实现差值聚合计算
- Nginx源码分析-启动初始化过程(一)
- 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
- Shell脚本学习-阶段九-数据库被攻击恢复
- Python reversed()函数
- Python(8)_初学Python
- 我的世界服务器领地怎么无限大,我的世界:Minecraft都市传说,MC无限大?让我们一起寻找边界吧...
- USB协议(1)USB基础知识
- 最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
- 都9012年了!假借区块链敛财骗局仍一桩接一桩
- 本科专业计算机课程,本科计算机专业有哪些课程
- 北京大学计算机学院课程表,北京大学课程表.PDF
- java diamond 运算符_解决:Java source1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符...
- java将小写的日期转换为大写的日期
- SAP ALV报表开发实战案例(三)
- 百度官方:网站优化中死链处理指南与总结
- 1131 拯救大兵瑞恩(单源最短路径扩展-拆点(dp))
- linux镜像包含redis吗,Linux虚拟机镜像\redis安装