0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在HarmonyOS点亮LED步骤

OpenHarmony技术社区 来源:鸿蒙技术社区 作者:一点先森 2021-09-28 09:16 次阅读

Hi3861 模组的介绍

①外观和基本功能

Hi3861 开发板模组大小约 2cm*5cm,是一款高度集成的 2.4GHz WLAN SoC。

Hi3861 芯片集成高性能 32bit 微处理器、拥有丰富的外设接口,芯片内置 SRAM(Static Random Access Memory)和 Flash,并支持在 Flash 上运行程序。

Hi3861 模组有 2MB FLASH,352KB RAM。但我们编写代码时,要注意对有限资源的合理利用。

Hi3861 可以说是麻雀虽小,五脏俱全。Hi3861 的外设接口包括(外部主晶振为 40M 或者 24M):

2 个 SPI(Synchronous Peripheral Interface)

3 个 UART(Universal Asynchronous Receiver & Transmitter)

2 个 I2C(The Inter-Integrated Circuit)

6 路 PWM(Pulse Width Modulation)

15 个 GPIO(General Purpose Input/Output)

7 路 ADCAnalog to Digital Converter)

1 个 I2S 接口

1 个高速 SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达 50MHz

Hi3861 主控功能框架图:

ef51d2e4-1fc2-11ec-82a8-dac502259ad0.png

Hi3861 原理图:

efe0e63c-1fc2-11ec-82a8-dac502259ad0.png

f06dc5e8-1fc2-11ec-82a8-dac502259ad0.png

Hi3861 开发环境的搭建

因为截至本文发布,Linux 平台下的开发工具不支持 Hi3861 的烧录(且 Windows 平台中的编译环境比较难搭建),所以我们得使用 Windows 的工具来烧录,Linux 平台编译。

Ubuntu20.04 来编译源码,Windows10 通过网络从 Ubuntu 中下载二进制文件,并烧录二进制文件到 Hi3861 中。

①Ubuntu20.04 开发环境的搭建

可以在 Windows10 中使用 virtual box 虚拟机软件来安装一个下载好的 Ubuntu20.04 镜像,从而拥有 Ubuntu20.04 基本的开发环境。这里忽略。

假设:

已有 Ubuntu20.04 系统

可以联网

可以使用 ssh 连接

其空闲存储空间(推荐)在 30G 以上

执行以下命令来搭建 Ubuntu20.04 的环境:

// Ubuntu20+

sudo apt update

sudo apt install -y vim gcc g++ flex bison texinfo make zlib* libffi-dev git git-lfs iputils-ping iproute2 net-tools

sudo apt install -y build-essential python3 python3-pip python3.8-venv scons python3-testresources

pip3 install scons ; scons -v

pip3 install kconfiglib

pip3 install pycryptodome

pip3 install six --upgrade --ignore-installed six

pip3 install ecdsa

// 安装hb

python3 -m pip install --user ohos-build

// 安装编译链gcc_riscv32整合包, // 或者自行下载gcc_riscv32各个组件 并且编译, N/A

wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

// 使用~/.bashrc来配置环境变量

export PATH=$PATH:~/work/tools/gcc_riscv32/binsource ~/.bashrc

//检查编译链是否安装好

$ riscv32-unknown-elf-gcc -v

。..

gcc version 7.3.0 (GCC)

// downloads devicetool-linux-tool

wget https://contentcenter-vali-drcn.dbankcdn.com/pvt_2/DeveloperAlliance_package_901_9/50/v3/3iXerz92RfqKxMyzEXHblg/devicetool-linux-tool-2.1.0.0.zip?HW-CC-KV=V1&HW-CC-Date=20210531T110021Z&HW-CC-Expire=315360000&HW-CC-Sign=24AFCA46B37541ED3A936186EEDF627CFD397B7C202FFEEF564D820897F75822

//install vscode, install node.js & hpm

N/A

// unzip & install the tool

bash deveco-device-tool-2.2.0+285431.76f4090e.run

// 最后可能有个warning信息,我们按照提示来安装一个软件即可

sudo apt install authbind

。..

// downloads the source codes

wget https://repo.huaweicloud.com/harmonyos/os/1.1.2/code-v1.1.2-LTS.tar.gz

tar -xvf code-v1.1.2-LTS.tar.gz

进入源代码根路径,进行配置和编译,“build success” 就意味着编译环境搭建成功。

$ cd code-v1.1.2-LTS

$ hb set

[OHOS INFO] Input code path: 。

OHOS Which product do you need? wifiiot_hispark_pegasus

$ hb build

。..

[OHOS INFO] wifiiot_hispark_pegasus build success

[OHOS INFO] cost time: 0:00:37

$ ls out/hispark_pegasus/wifiiot_hispark_pegasus/ -alh

total 31M

drwxrwxr-x 7 henry henry 4.0K 9月 2 14:52 。

drwxrwxr-x 3 henry henry 4.0K 9月 2 14:51 。.

-rw-rw-r-- 1 henry henry 462 9月 2 14:51 args.gn

-rw-rw-r-- 1 henry henry 47K 9月 2 14:52 build.log

-rw-rw-r-- 1 henry henry 26K 9月 2 14:51 build.ninja

-rw-rw-r-- 1 henry henry 5.3K 9月 2 14:51 build.ninja.d

drwxrwxr-x 3 henry henry 4.0K 9月 2 14:51 gen

-rw-rw-r-- 1 henry henry 24K 9月 2 14:52 Hi3861_boot_signed_B.bin

-rw-rw-r-- 1 henry henry 24K 9月 2 14:52 Hi3861_boot_signed.bin

-rw-rw-r-- 1 henry henry 15K 9月 2 14:52 Hi3861_loader_signed.bin

-rw-rw-r-- 1 henry henry 1.2M 9月 2 14:52 Hi3861_wifiiot_app_allinone.bin

-rw-rw-r-- 1 henry henry 22M 9月 2 14:52 Hi3861_wifiiot_app.asm

-rw-rw-r-- 1 henry henry 1.2M 9月 2 14:52 Hi3861_wifiiot_app_burn.bin

-rw-rw-r-- 1 henry henry 25K 9月 2 14:52 Hi3861_wifiiot_app_flash_boot_ota.bin

-rw-rw-r-- 1 henry henry 3.5M 9月 2 14:52 Hi3861_wifiiot_app.map

-rw-rw-r-- 1 henry henry 570K 9月 2 14:52 Hi3861_wifiiot_app_ota.bin

-rwxrwxr-x 1 henry henry 2.2M 9月 2 14:52 Hi3861_wifiiot_app.out

-rw-rw-r-- 1 henry henry 8 9月 2 14:52 Hi3861_wifiiot_app_vercfg.bin

drwxrwxr-x 2 henry henry 4.0K 9月 2 14:51 libs

-rw-rw-r-- 1 henry henry 37K 9月 2 14:52 .ninja_log

drwxrwxr-x 4 henry henry 4.0K 9月 2 14:51 NOTICE_FILE

drwx------ 12 henry henry 4.0K 9月 2 14:51 obj

drwxrwxr-x 3 henry henry 4.0K 9月 2 14:51 suites

-rw-rw-r-- 1 henry henry 34K 9月 2 14:51 toolchain.ninja

②Windows10 开发环境的搭建

如下表:

安装 hpm:

// 建议将npm源配置为国内镜像,例如设置为华为云镜像源。

npm config set registry https://repo.huaweicloud.com/repository/npm/// 打开命令行工具,执行如下命令安装最新版本hpm。

npm install -g @ohos/hpm-cli

//如果已安装hpm,可以执行命令升级hpm至最新版本。

npm update -g @ohos/hpm-cli

问题:DevEco Device Tool安装失败:

“[Errno 13] Permission denied: ‘xxx\.deveco-device-tool\core\tool_openlogic_openjdk_jre\jre\bin\ucrtbase.dll’”

解决:

退出了 360 安全卫士,关闭杀毒软件和所有其他不相关软件:vscode,OpenJDK…

手动删除 C:Users《xxx》AppDataLocaldeveco-device-tool-installer 和 C:Users《xxx》.deveco-device-tool 这两个目录

重新安装

重启 vscode 后,在左侧功能图标中有 deveco 的图标出现,即表示 deveco 安装成功

点亮 Hi3861 的 LED

Hi3861 的 gpio 功能列表如下图:

①首先我们应该找到 Hi3861 的原理图,LED1 对应的是 GPIO09

根据这个原理图,我们只要保持 J3 的跳冒是连接的,从 CPU 引过来的 GPIO09 保持低电平,那么 LED1 就会点亮了。

HarmonyOS 的 gpio 操作流程为:

因为我们不是操作 gpio 来获取/控制/响应 gpio 的中断,所以只需要关心读写 gpio 的流程即可。

②HarmonyOS 中提供了 LED 的 demo,可以供我们使用

代码如下:

code-v1.1.2-LTS/applications/sample/wifi-iot/app/iothardware/led_example.c

我们需要修改配置文件:app/BUILD.gn,添加相对路径“iothardware”下的库“led_example”,中间以“:”分隔开。

修改好后,我们就可以到源码的根目录中使用“hb build”来编译了。

注:“led_example”库名称是由 iothardware/BUILD.gn 来指定的。

烧录二进制文件到 Hi3861

①下载 Ubuntu 中的源码二进制文件到 Windows10 中

所有的生成文件在:code-v1.1.2-LTS/out 目录中。

我们使用 mobaxterm 工具:

https://mobaxterm.mobatek.net/download.html

ssh 访问到我们的 Ubuntu20.04 后,就可以用其 sftp 功能下载 out 目录到我们的 win10 的 download 目录中。

②在 Windows10 中已经安装好 deveco 工具的 vscode 打开

一定要打开包含 out 目录的上一级目录:如我们的下载目录 downloads 文件夹。

直接可以作为一个项目打开,选择 framework 为:hb,平台为:hi3861。

③配置项目的下载信息

连接好自己的 hi3861 模组,如果电脑没有装 ch340 串口驱动,一定别忘了装。

④点击烧录

烧录的过程中,会在 vscode 的终端提示重启开始烧录,请按下 hi3861 的 reset 键开始烧录。

烧录成功后,重新上电即可立即运行:

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22445

    浏览量

    645846
  • adc
    adc
    +关注

    关注

    95

    文章

    5648

    浏览量

    539413
  • HarmonyOS
    +关注

    关注

    79

    文章

    1807

    浏览量

    29255

原文标题:用HarmonyOS点亮LED!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HarmonyOS点亮OLED

    原先用LiteOS点亮过OLED,这次用HarmonyOS点亮OLED
    发表于 08-22 14:24 579次阅读

    汇编点亮LED灯——极简的魅力

    介绍4句汇编语言点亮LED
    的头像 发表于 04-27 08:58 78.7w次阅读
    汇编<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯——极简的魅力

    单片机如何点亮LED

    现在LED接好了,那么要怎样点亮LED呢?
    的头像 发表于 11-01 11:36 1355次阅读
    单片机如何<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    51单片机中点亮一个LED

    当我们学过51单片机之后就知道51单片机中点亮一个LED很简单一句代码就可以实现。只需要将LED所连接的IO口拉低就可以点亮
    发表于 12-07 06:39

    点亮LED步骤

    点亮LED步骤:a.看电路原理图,确定控制LED的引脚b.看主芯片手册,确定如何设置、控制引脚c.写程序、编译、烧写1.看原理图:n_LED
    发表于 12-15 08:26

    点亮LED灯需要哪几个步骤

    某些功能的时候,就要操作某个寄存器。可以把寄存器类比为,有特殊功能的地方,既然是个地方当然就有地址了,所以,可以把寄存器想象为特殊的地址。二、点灯点亮LED灯,需要用到GPIO端口。为了点亮L
    发表于 02-10 08:06

    STM8上点亮LED的大致步骤有哪些

    (Pin)进行模式和电平设置,才能够点亮LED。先说C51和STM32上点亮LED的大致步骤,再来对比STM8上的
    发表于 02-25 06:37

    RK3288平台上用gpio驱动点亮led灯的步骤有哪些呢

    RK3288平台上用gpio驱动点亮led灯的步骤有哪些呢?
    发表于 03-03 07:36

    接顺序点亮6个LED的电路

    接顺序点亮6个LED的电路
    发表于 02-09 16:13 1583次阅读
    接顺序<b class='flag-5'>点亮</b>6个<b class='flag-5'>LED</b>的电路

    使用寄存器点亮LED

    stm32是我们会寄存器点亮LED
    发表于 12-01 15:30 0次下载

    如何使用单片机点亮LED

    我们学单片机,第一个程序就是点亮一盏LED灯,那么我单片机开启面向对象方式的第一步也是点亮一盏LED灯,这里主要是用到了继承和封装的2个概念;这里我们先讲一下,使用传统的一些
    发表于 07-16 17:39 4次下载
    如何使用单片机<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    51单片机——LED灯的点亮

    点亮LED原理单片机点亮LED 利用LED阳极为正阴极为负才会导通点亮的特性,进行
    发表于 11-11 19:21 19次下载
    51单片机——<b class='flag-5'>LED</b>灯的<b class='flag-5'>点亮</b>

    合泰杯——合泰单片机工程之点亮LED

    合泰杯——合泰单片机工程之点亮LED合泰杯——合泰单片机工程之点亮LED前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前
    发表于 11-29 14:36 10次下载
    合泰杯——合泰单片机工程之<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>

    Psoc 赛普拉斯点亮LED

    点亮LED灯在每个MCU中都是最基础部分,主要介绍PSoC Creator工程的创建使用,以及LED点亮闪烁。
    发表于 12-20 18:57 9次下载
    Psoc 赛普拉斯<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>

    STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效

    (Pin)进行模式和电平设置,才能够点亮LED。先说C51和STM32上点亮LED的大致步骤,再来对比STM8上的
    发表于 01-13 12:38 6次下载
    STM8S自学笔记-003 GPIO输出:<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯 and 跑马灯特效