女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony3.0上編譯C控制Hi3516開發板的LED閃爍

OpenHarmony技術社區 ? 來源:鴻蒙技術社區 ? 作者:亮子力 ? 2021-09-28 09:42 ? 次閱讀

OpenHarmony 分為輕量系統、小型系統、標準系統,目前對應 LiteOS-M、LiteOS-A、Linux 內核。但好像并沒有說一定是按照使用內核來劃分。我們這里姑且先這么區分。

本文使用的是比較新的 OpenHarmony 3.0 LTS 版本,Linux 內核,編譯標準系統。

官方文檔已經說明了,如何使用 DevEco Studio 開發 hap 包,并運行在開發板,但是 ACE 框架能力有限。

設備硬件開發還是需要 C,所以這篇文章,將在標準系統下編譯 C 控制 Hi3516 開發板的 LED 閃爍。

環境準備

3.0 源碼下載:

repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.0-LTS --no-repo-verify

repo sync -c

repo forall -c ‘git lfs pull’

區別于 2.0 需要安裝 ruby,其他基本都一樣。

sudo apt-get install ruby-full

編譯命令:

build/prebuilts_download.sh

。/build.sh --product-name Hi3516DV300

編寫 helloworld.c

在 applicationsstandard 目錄下新建一個 app 目錄來存放 .c 的業務代碼。

比如 applicationsstandardapphelloworld.c 內容容下:

#include 《stdio.h》int main(){

printf(“Hello world.

”);

return 0;

}

然后在當前目錄新建編譯腳本 BUILD.gn 內容如下:

import(“//build/ohos.gni”)

import(“//drivers/adapter/uhdf2/uhdf.gni”)

ohos_executable(“helloworld”) {

sources = [

“helloworld.c”

subsystem_name = “applications”

part_name = “prebuilt_hap”

}

然后添加到編譯框架 applicationsstandardhapohos.build 增加如下內容。

“//applications/standard/app:helloworld”

最后執行編譯命令即可,開發板使用的是 Hi3516,在不指定 out 目錄時,缺省生成在 /system/lib64 或 /system/lib 下。

6d1eed6c-1fc1-11ec-82a8-dac502259ad0.png

點亮開發板 LED

能打印 helloworld 說明環境是沒問題的,接下來嘗試點亮開發板的 LED。查看 Hi3516DV300 原理圖:

6dcc264e-1fc1-11ec-82a8-dac502259ad0.png

6e664ac6-1fc1-11ec-82a8-dac502259ad0.png

Hi3516DV300 共有 4 層板,由原理圖可知:最上層板的紅外補光燈接在 GPIO5_1,綠色 LED 指示燈在 GPIO2_3,核心板的紅色 LED 在 GPIO3_4。

接下來參考 OpenHarmony GPIO 驅動說明:

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-platform-gpio-des.md

確定GPIO管腳號:不同SOC芯片由于其GPIO控制器型號、參數、以及控制器驅動的不同,GPIO管腳號的換算方式不一樣。

①Hi3516DV300:控制器管理 12 組 GPIO 管腳,每組 8 個。

GPIO 號 = GPIO 組索引 (0~11) * 每組 GPIO 管腳數(8) + 組內偏移

舉例:GPIO10_3 的 GPIO 號 = 10 * 8 + 3 = 83。

②Hi3518EV300:控制器管理 10 組 GPIO 管腳,每組 10 個。

GPIO 號 = GPIO 組索引 (0~9) * 每組 GPIO 管腳數(10) + 組內偏移

舉例:GPIO7_3 的 GPIO 管腳號 = 7 * 10 + 3 = 73

由此可以得出:

GPIO5_1 = 5 * 8 + 1;

GPIO2_3 = 2 * 8 + 3;

GPIO3_4 = 3 * 8 + 4;

然后新建 applicationsstandardappledtest.c,內容如下:

#include 《stdlib.h》 // standard library 標準庫函數頭文件#include 《stdio.h》 // standard input output 標準輸入輸出函數#include 《stdint.h》 // 定義了擴展的整數類型和宏#include 《unistd.h》 // POSIX 系統 API 訪問功能的頭文件#include 《fcntl.h》 // unix標準中通用的頭文件 define O_WRONLY and O_RDONLY // #include 《string.h》#define GPIO_DIR_IN “in”#define GPIO_DIR_OUT “out”#define GPIO_VAL_LOW 0#define GPIO_VAL_HIGHT 1int32_t GpioSetDir(uint16_t gpio, char* dir){

char path[100] = {0};

sprintf(path,“echo %d 》 /sys/class/gpio/export”,gpio);

system(path);

printf(“info:%s

”,path);

char direction[100] = {0};

sprintf(direction,“echo %s 》 /sys/class/gpio/gpio%d/direction”,dir,gpio);

system(direction);

printf(“info:%s

”,direction);

return 0;

}

int32_t GpioWrite(uint16_t gpio, uint16_t val)

{

char path[100] = {0};

sprintf(path,“echo %d 》 /sys/class/gpio/gpio%d/value”,val,gpio);

system(path);

printf(“info:%s

”,path);

return 0;

}

int main(){

uint16_t GPIO5_1 = 5 * 8 + 1;

uint16_t GPIO2_3 = 2 * 8 + 3;

uint16_t GPIO3_4 = 3 * 8 + 4;

printf(“LED test start

”);

int32_t ret;

// uint16_t val;

ret = GpioSetDir(GPIO5_1,GPIO_DIR_OUT);

if (ret != 0) {

printf(“GpioSerDir: failed, ret %d

”, ret);

return 0;

}

ret = GpioSetDir(GPIO2_3,GPIO_DIR_OUT);

if (ret != 0) {

printf(“GpioSerDir: failed, ret %d

”, ret);

return 0;

}

ret = GpioSetDir(GPIO3_4,GPIO_DIR_OUT);

if (ret != 0) {

printf(“GpioSerDir: failed, ret %d

”, ret);

return 0;

}

while(1)

{

GpioWrite(GPIO5_1, GPIO_VAL_HIGHT);

usleep(1000000);

GpioWrite(GPIO5_1, GPIO_VAL_LOW);

usleep(1000000);

GpioWrite(GPIO2_3, GPIO_VAL_HIGHT);

usleep(1000000);

GpioWrite(GPIO2_3, GPIO_VAL_LOW);

usleep(1000000);

GpioWrite(GPIO3_4, GPIO_VAL_HIGHT);

usleep(1000000);

GpioWrite(GPIO3_4, GPIO_VAL_LOW);

usleep(1000000);

}

return 0;

}

將業務代碼添加到 BUILD.gn:

import(“//build/ohos.gni”)

import(“//drivers/adapter/uhdf2/uhdf.gni”)

ohos_executable(“helloworld”) {

sources = [

“helloworld.c”

subsystem_name = “applications”

part_name = “prebuilt_hap”

}

ohos_executable(“ledtest”) {

sources = [

“ledtest.c”

subsystem_name = “applications”

part_name = “prebuilt_hap”

}

applicationsstandardhapohos.build:

“//applications/standard/app:ledtest”

之后將程序燒錄到開發板,執行 。/system/bin/ledtest:

6ee87c1c-1fc1-11ec-82a8-dac502259ad0.png

就可以看到 LED 閃爍起來了。

本來是打算使用鴻蒙的 GPIO 接口來實現這個功能的,不過調試了很久也沒調通,最后無奈還是用的 system 自己實現的 GPIO 函數。

有沒使用 OpenHarmony 的 GPIO 成功的小伙伴可以留言一起交流啊。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23694

    瀏覽量

    670836
  • 開發板
    +關注

    關注

    25

    文章

    5501

    瀏覽量

    102180
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2639

    瀏覽量

    67699
  • OpenHarmony
    +關注

    關注

    26

    文章

    3820

    瀏覽量

    18125

原文標題:OpenHarmony 3.0上點亮開發板LED

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    貝啟BQ3568HM 開發板被選用為 OpenHarmony 明星開發板

    經開放原子開源基金會OpenHarmony社區官方測評評選,貝啟科技BQ3568HM開源鴻蒙開發板被正式選用為OpenHarmony明星開發板。BQ3568HM開源鴻蒙
    的頭像 發表于 05-25 00:22 ?246次閱讀
    貝啟BQ3568HM <b class='flag-5'>開發板</b>被選用為 <b class='flag-5'>OpenHarmony</b> 明星<b class='flag-5'>開發板</b>

    基于小凌派RK2206開發板OpenHarmony如何使用IoT接口控制FLASH外設

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板使用IOT庫的FLASH接口,進行FLASH編程開發。例程將創建一個任務,實現FLASH讀寫操作。例程源代碼:https
    的頭像 發表于 04-22 14:49 ?256次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口<b class='flag-5'>控制</b>FLASH外設

    基于小凌派RK2206開發板OpenHarmony如何使用IoT接口控制UART外設

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板使用IOT庫的UART接口,進行UART編程開發。例程將創建一個任務,通過配置UART引腳,實現UART讀寫操作。例程源代碼:https
    的頭像 發表于 04-22 14:22 ?308次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口<b class='flag-5'>控制</b>UART外設

    基于小凌派RK2206開發板OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板使用IOT庫的GPIO中斷模式,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳為中斷模式,實現GPIO中斷操作。例程源代碼
    的頭像 發表于 04-21 10:39 ?342次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口<b class='flag-5'>控制</b>GPIO中斷

    基于小凌派RK2206開發板OpenHarmony如何使用IoT接口控制GPIO外設

    1、案例簡介本案例主要是如何在小凌派-RK2206開發板使用IOT庫的GPIO接口,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳,實現GPIO讀寫操作。例程源代碼:https
    的頭像 發表于 04-11 15:36 ?713次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口<b class='flag-5'>控制</b>GPIO外設

    基于小凌派RK2206開發板OpenHarmony如何使用IoT接口控制ADC外設

    1、案例簡介本案例主要講解如何在小凌派-RK2206開發板使用IoT庫的ADC接口,進行ADC編程開發。例程內容為創建一個任務,讀取按鍵的ADC值,并打印到串口。例程源代碼:https
    的頭像 發表于 04-10 16:00 ?317次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口<b class='flag-5'>控制</b>ADC外設

    北京迅為iTOP-RK3568開發板OpenHarmony系統南向驅動開發實操-HDF驅動配置LED

    北京迅為iTOP-RK3568開發板OpenHarmony系統南向驅動開發實操-HDF驅動配置LED
    的頭像 發表于 03-14 14:41 ?490次閱讀
    北京迅為iTOP-RK3568<b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>系統南向驅動<b class='flag-5'>開發</b>實操-HDF驅動配置<b class='flag-5'>LED</b>

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構
    的頭像 發表于 03-11 14:13 ?980次閱讀
    北京迅為RK3568<b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>系統南向驅動<b class='flag-5'>開發</b>內核HDF驅動框架架構

    迅為RK3568開發板OpenHarmony實操HDF驅動控制LED-添加內核編譯

    編譯內核時將該 HDF 驅動編譯到鏡像中,接下來編寫驅動編譯腳本 Makefile,代碼如下所示: 加入編譯體系,填加模塊目錄到 drivers/hdf_core/adapter/kh
    發表于 01-22 10:35

    迅為RK3568開發板OpenHarmony實操HDF驅動控制LED-編寫內核 LED HDF 驅動程序

    接下來編譯 LED 驅動,該驅動用于在基于華為設備框架(HDF)的系統中控制 LED 燈的開關,完整代碼如下所示: 更多內容可以關注:迅為RK3568
    發表于 01-17 15:13

    迅為RK3568開發板OpenHarmony配置HDF驅動控制LED-新增 topeet子系統

    目錄 ├── led_driver.c:內核 LED HDF 驅動程序 └── Makefile:內核 LED HDF 驅動編譯腳本 更多內容可以關注:迅為RK3568
    發表于 01-13 15:59

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發板演示

    本文介紹瑞芯微主板/開發板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發板演示。搭載了瑞芯微RK3566四核處理器,樹莓派卡片電腦設計,支持開
    的頭像 發表于 12-30 10:08 ?643次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼<b class='flag-5'>編譯</b>后燒錄鏡像教程,RK3566鴻蒙<b class='flag-5'>開發板</b>演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發板演示

    開源鴻蒙OpenHarmony系統下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,搭載了瑞芯微RK3566四核處理器,Laval鴻蒙社區推薦開發板,已適配全新開源鴻蒙
    的頭像 發表于 12-24 11:46 ?592次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能RK3566鴻蒙<b class='flag-5'>開發板</b>演示

    linux開發板如何編譯curl

    在Linux開發板編譯 curl 庫通常涉及到幾個步驟,包括準備開發環境、下載源代碼、配置編譯選項以及執行
    的頭像 發表于 08-30 15:33 ?1228次閱讀

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發板

    大家期待已久的迅為RK3568開發板終于迎來了鴻蒙4.1系統的強勢支持!想知道如何實現快速開發學習嗎?跟著我們一起來探索吧! 迅為RK3568開發板: 想象一下,你手中的RK3568開發板
    發表于 07-23 10:44