精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何操作GPIO去點(diǎn)燈

電子發(fā)燒友開源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-03-02 17:45 ? 次閱讀

摘要:本文簡(jiǎn)單介紹如何操作GPIO去點(diǎn)燈

本文適用于正在研究Hi3861開發(fā)板,L0輕量系統(tǒng)驅(qū)動(dòng)開發(fā)的小伙伴

1、點(diǎn)燈例程源碼

先看最簡(jiǎn)單得LED燈閃爍操作,源碼結(jié)構(gòu)如下:

如何操作GPIO去點(diǎn)燈

第一個(gè)BUILD.gn文件內(nèi)容:

static_library("led_demo") {  sources = [    "led_demo.c"  ]
  include_dirs = [    "http://utils/native/lite/include",    "http://kernel/liteos_m/components/cmsis/2.0",    "http://base/iot_hardware/peripheral/interfaces/kits",  ]}

向右滑動(dòng)查看完整代碼

第二個(gè)BUILD.gn內(nèi)容:

# Copyright (c) 2020 Huawei Device Co., Ltd.# Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##   http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.
import("http://build/lite/config/component/lite_component.gni")
lite_component("app") {  features = [    "led_demo:led_demo",  ]}

向右滑動(dòng)查看完整代碼

led_demo.c內(nèi)容:

#include #include "stdio.h"#include "ohos_init.h"#include "cmsis_os2.h"#include "iot_gpio.h"
#define LED_TEST_GPIO 9 // for hispark_pegasus
void *LedTask(const char *arg){  //初始化GPIO  IoTGpioInit(LED_TEST_GPIO);
  //設(shè)置為輸出  IoTGpioSetDir(LED_TEST_GPIO, IOT_GPIO_DIR_OUT);
  (void)arg;  while (1)   {    //輸出低電平    IoTGpioSetDir(LED_TEST_GPIO, 0);    usleep(300000);    //輸出高電平    IoTGpioSetDir(LED_TEST_GPIO, 1);    usleep(300000);  }
  return NULL;}
void led_demo(void){  osThreadAttr_t attr;    attr.name = "LedTask";  attr.attr_bits = 0U;  attr.cb_mem = NULL;  attr.cb_size = 0U;  attr.stack_mem = NULL;  attr.stack_size = 512;  attr.priority = 26;
  if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {    printf("[LedExample] Falied to create LedTask!
");  }  }

SYS_RUN(led_demo);

向右滑動(dòng)查看完整代碼

編譯后燒錄進(jìn)去,應(yīng)該可以看到復(fù)位按鍵旁邊的LED燈一直在閃爍。

如何操作GPIO去點(diǎn)燈

2、驅(qū)動(dòng)框架

OpenHarmony為輕量系統(tǒng)提供了一套簡(jiǎn)單的驅(qū)動(dòng)封裝接口,函數(shù)的定義相關(guān)頭文件位于“baseiot_hardwareperipheralinterfaceskits”

如何操作GPIO去點(diǎn)燈

這里只有頭文件,具體的函數(shù)實(shí)現(xiàn),需要在對(duì)應(yīng)的soc中,具體路徑定義由deviceoardhisiliconhispark_pegasusliteos_mconfig.gni 文件中定義:

如何操作GPIO去點(diǎn)燈

所以我們可以知道,具體的路徑就是“devicesochisiliconhi3861v100hi3861_adapterhalsiot_hardwarewifiiot_lite”,相關(guān)文件如下:

如何操作GPIO去點(diǎn)燈

這里是代碼實(shí)現(xiàn),具體是將hi3861相關(guān)的驅(qū)動(dòng)接口封裝成鴻蒙的驅(qū)動(dòng)接口。所以我們可以總結(jié)如下:

如何操作GPIO去點(diǎn)燈

3、GPIO相關(guān)接口函數(shù)

(1)相關(guān)枚舉:

/** * @brief 枚舉 GPIO 電平值。 */類型定義枚舉 {   /** 低 GPIO 電平 */   IOT_GPIO_VALUE0 = 0,   /** 高 GPIO 電平 */   IOT_GPIO_VALUE1} IotGpioValue;
/** * @brief 枚舉 GPIO 方向。 */類型定義枚舉 {   /** 輸入 */   IOT_GPIO_DIR_IN = 0,   /** 輸出 */   IOT_GPIO_DIR_OUT} IotGpioDir;
/** * @brief 枚舉 GPIO 中斷觸發(fā)模式。 */類型定義枚舉 {   /** 電平敏感中斷 */   IOT_INT_TYPE_LEVEL = 0,   /** 邊緣敏感中斷 */   IOT_INT_TYPE_EDGE} IotGpioIntType;
/** * @brief 枚舉 I/O 中斷極性。 */類型定義枚舉 {   /** 低電平或下降沿中斷 */   IOT_GPIO_EDGE_FALL_LEVEL_LOW = 0,   /** 高電平或上升沿中斷 */   IOT_GPIO_EDGE_RISE_LEVEL_HIGH} IotGpioIntPolarity;

向右滑動(dòng)查看完整代碼

(2)普通GPIO相關(guān)API

/** * @brief 表示 GPIO 中斷回調(diào)。 * */typedef void (*GpioIsrCallbackFunc) (char *arg);
/** * @brief 初始化一個(gè) GPIO 設(shè)備。 * * @param id 表示 GPIO 引腳號(hào)。 * @return 如果 GPIO 設(shè)備已初始化,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioInit(unsigned int id);
/** * @brief 取消初始化 GPIO 設(shè)備。 * * @param id 表示 GPIO 引腳號(hào)。 * @return 如果 GPIO 設(shè)備被取消初始化,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioDeinit(unsigned int id);
/** * @brief 設(shè)置 GPIO 引腳的方向。 * * @param id 表示 GPIO 引腳號(hào)。 * @param dir 指示 GPIO 輸入/輸出方向。 * @return 如果設(shè)置了方向,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioSetDir(unsigned int id, IotGpioDir dir);
/** * @brief 獲取 GPIO 引腳的方向。 * * @param id 表示 GPIO 引腳號(hào)。 * @param dir 指示指向 GPIO 輸入/輸出方向的指針。 * @return 如果獲取到方向,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioGetDir(unsigned int id, IotGpioDir *dir);
/** * @brief 設(shè)置 GPIO 引腳的輸出電平值。 * * @param id 表示 GPIO 引腳號(hào)。 * @param val 表示輸出電平值。 * @return 如果設(shè)置了輸出級(jí)別值,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioSetOutputVal(unsigned int id,IotGpioValue val);
/** * @brief 獲取 GPIO 引腳的輸出電平值。 * * @param id 表示 GPIO 引腳號(hào)。 * @param val 表示指向輸出電平值的指針。 * @return 如果獲得輸出電平值,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioGetOutputVal(unsigned int id, IotGpioValue *val);
/** * @brief 獲取 GPIO 引腳的輸入電平值。 * * @param id 表示 GPIO 引腳號(hào)。 * @param val 表示指向輸入電平值的指針。 * @return 如果獲得輸入電平值,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioGetInputVal(unsigned int id, IotGpioValue *val);

向右滑動(dòng)查看完整代碼

(3)按鍵中斷相關(guān)API

/** * @brief 啟用 GPIO 引腳的中斷功能。 * * 該函數(shù)可用于設(shè)置GPIO引腳的中斷類型、中斷極性和中斷回調(diào)。 * * @param id 表示 GPIO 引腳號(hào)。 * @param intType 表示中斷類型。 * @param intPolarity 指示中斷極性。 * @param func 表示中斷回調(diào)函數(shù)。 * @param arg 表示指向中斷回調(diào)函數(shù)中使用的參數(shù)的指針。 * @return 如果啟用中斷功能,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioRegisterIsrFunc(unsigned int id,IotGpioIntType intType,IotGpioIntPolarity intPolarity,                  GpioIsrCallbackFunc fun,char *arg);
/** * @brief 禁用 GPIO 引腳的中斷功能。 * * @param id 表示 GPIO 引腳號(hào)。 * @return 如果中斷功能被禁用,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioUnregisterIsrFunc(unsigned int id);
/** * @brief 屏蔽 GPIO 引腳的中斷功能。 * * @param id 表示 GPIO 引腳號(hào)。 * @param mask 表示中斷函數(shù)是否被屏蔽。 * 值1表示屏蔽中斷功能,0表示不屏蔽中斷功能。 * @return 如果中斷功能被屏蔽,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioSetIsrMask(unsigned int id, unsigned char mask);
/** * @brief 設(shè)置 GPIO 引腳的中斷觸發(fā)模式。 * * 此函數(shù)根據(jù)中斷類型和中斷極性配置 GPIO 引腳。 * * @param id 表示 GPIO 引腳號(hào)。 * @param intType 表示中斷類型。 * @param intPolarity 指示中斷極性。 * @return 如果設(shè)置了中斷觸發(fā)模式,則返回 {@link IOT_SUCCESS}; * 否則返回 {@link IOT_FAILURE}。其他返回值詳見(jiàn)芯片說(shuō)明。 * @從 2.2 開始 * @2.2 版 */unsigned int IoTGpioSetIsrMode(unsigned int id, IotGpioIntType intType, IotGpioIntPolarity intPolarity);

向右滑動(dòng)查看完整代碼

原文標(biāo)題:OpenHarmony輕量系統(tǒng)開發(fā)【5】驅(qū)動(dòng)之GPIO點(diǎn)燈

文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23134

    瀏覽量

    658408
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1825

    瀏覽量

    85178
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4943

    瀏覽量

    97188

原文標(biāo)題:OpenHarmony輕量系統(tǒng)開發(fā)【5】驅(qū)動(dòng)之GPIO點(diǎn)燈

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32 GPIO的基本結(jié)構(gòu)

    萬(wàn)物皆有源頭,大家學(xué)習(xí)單片機(jī)的源頭操作就是通過(guò)GPIO點(diǎn)燈GPIO作為STM32最基礎(chǔ)的外設(shè),也是大家最先接觸的外設(shè)。 當(dāng)然,看似基礎(chǔ)的GPIO
    發(fā)表于 04-14 10:38 ?1047次閱讀
    STM32 <b class='flag-5'>GPIO</b>的基本結(jié)構(gòu)

    基于STC8A8K64S4A12開發(fā)板的GPIO點(diǎn)燈實(shí)驗(yàn)

    最近空閑時(shí)間比較多,準(zhǔn)備說(shuō)說(shuō)STC8A8K64S4A12開發(fā)板。 實(shí)驗(yàn)做起來(lái)——先從GPIO點(diǎn)燈開始。
    的頭像 發(fā)表于 11-15 16:52 ?1253次閱讀
    基于STC8A8K64S4A12開發(fā)板的<b class='flag-5'>GPIO</b><b class='flag-5'>點(diǎn)燈</b>實(shí)驗(yàn)

    GPIO點(diǎn)燈,燈不亮

    我用創(chuàng)龍核心板SYS/BIOS的GPIO_LED歷程跑,發(fā)現(xiàn)點(diǎn)燈,燈不會(huì)亮。后來(lái)單步發(fā)現(xiàn)如下圖的問(wèn)題GPIOPinWrite找不到源函數(shù),但是GPIOBankPinWrite
    發(fā)表于 03-31 10:57

    鴻蒙系統(tǒng)入門教程【有問(wèn)題留言,連老師定期答疑!】

    /jishu_2001480_1_1.html7、GPIO操作接下來(lái)我們就可以操作GPIO點(diǎn)燈
    發(fā)表于 10-26 18:40

    怎樣通過(guò)寄存器操作GPIO?GPIO有哪些操作實(shí)例?

    GPIO是什么?怎樣通過(guò)寄存器操作GPIO?GPIO有哪些操作實(shí)例?
    發(fā)表于 06-28 07:34

    STM32的點(diǎn)燈操作是如何進(jìn)行的

    ===================1.配置時(shí)鐘2.設(shè)置GPIO復(fù)用3.電氣屬性4.配置io功能5.打開LED完整的匯編1,類比STM32的點(diǎn)燈操作是如何進(jìn)行的???1,看原理圖,了解所要
    發(fā)表于 01-12 07:36

    OpenHarmony輕量系統(tǒng)開發(fā)【5】驅(qū)動(dòng)之GPIO點(diǎn)燈

    摘要:本文簡(jiǎn)單介紹如何操作GPIO點(diǎn)燈適合群體:適用于Hi3861開發(fā)板,L0輕量系統(tǒng)驅(qū)動(dòng)開發(fā)5.1點(diǎn)燈例程源碼先看最簡(jiǎn)單得LED燈閃爍
    發(fā)表于 01-21 14:34

    基于HAL庫(kù)的GPIO點(diǎn)燈

    【三】零基礎(chǔ)上手HAL庫(kù)之—GPIO點(diǎn)燈3.1前言我們已經(jīng)大致的了解了Cubemx軟件界面的一般操作,懂得如何新建工程和使用步驟了,接下來(lái)我們正式進(jìn)入使用Hal庫(kù)開發(fā)的旅程,這是一個(gè)驚心動(dòng)魄的時(shí)刻
    發(fā)表于 01-26 07:08

    請(qǐng)教大神GPIO-LED點(diǎn)燈實(shí)現(xiàn)的步驟有哪些

    LED庫(kù)開發(fā)該怎樣實(shí)現(xiàn)呢?請(qǐng)教大神GPIO-LED點(diǎn)燈實(shí)現(xiàn)的步驟有哪些?
    發(fā)表于 02-28 06:45

    GPIO模塊之直接使用寄存器操作點(diǎn)燈資料推薦

    1、GPIO之直接使用寄存器操作點(diǎn)燈了解寄存器之后,我們?cè)倏匆话愕?b class='flag-5'>操作步驟。通過(guò)手冊(cè)可以看到如下步驟清除 PWPR 的B0WI. 使能寫PWPR的PFSWE。置位 PWPR的 PFSW
    發(fā)表于 07-11 11:19

    HarmonyOS Hi3861 GPIO操作 點(diǎn)燈和按鍵實(shí)驗(yàn)

    Hi3861也提供了相關(guān)得GPIO操作,先看最簡(jiǎn)單得LED燈閃爍操作。另外GPIO口還可以作為輸入,然后使用中斷,示例代碼如下:這段示例代碼用的開發(fā)板上面的user按鍵。
    發(fā)表于 10-21 17:12 ?77次下載
    HarmonyOS Hi3861 <b class='flag-5'>GPIO</b><b class='flag-5'>操作</b> <b class='flag-5'>點(diǎn)燈</b>和按鍵實(shí)驗(yàn)

    【三】零基礎(chǔ)上手HAL庫(kù)之—GPIO點(diǎn)燈

    【三】零基礎(chǔ)上手HAL庫(kù)之—GPIO點(diǎn)燈3.1前言我們已經(jīng)大致的了解了Cubemx軟件界面的一般操作,懂得如何新建工程和使用步驟了,接下來(lái)我們正式進(jìn)入使用Hal庫(kù)開發(fā)的旅程,這是一個(gè)驚心動(dòng)魄的時(shí)刻
    發(fā)表于 12-02 14:06 ?9次下載
    【三】零基礎(chǔ)上手HAL庫(kù)之—<b class='flag-5'>GPIO</b><b class='flag-5'>點(diǎn)燈</b>

    基于stm32的GPIO點(diǎn)燈

    stm32點(diǎn)燈stm32_GPIOGPIO功能描述GPIO端口的每個(gè)位可以由軟件分別配置成多種輸入輸出模式輸入模式有:浮空輸入 下拉輸入 上拉輸入 模擬輸入輸出模式有:開漏輸出 推挽輸出 復(fù)用開漏
    發(fā)表于 01-13 16:09 ?5次下載
    基于stm32的<b class='flag-5'>GPIO</b><b class='flag-5'>點(diǎn)燈</b>

    基于博流BL606P音視頻開發(fā)板的GPIO點(diǎn)燈教程

    本文是關(guān)于開發(fā)者 swzswz 基于BL606P-DVK開發(fā)板實(shí)戰(zhàn)開發(fā)的系列文章中的一篇,主要介紹了GPIO點(diǎn)燈,后面還會(huì)持續(xù)更新社區(qū)開發(fā)者的測(cè)評(píng)內(nèi)容,敬請(qǐng)期待!
    的頭像 發(fā)表于 07-17 10:54 ?669次閱讀
    基于博流BL606P音視頻開發(fā)板的<b class='flag-5'>GPIO</b><b class='flag-5'>點(diǎn)燈</b>教程

    SOC GPIO操作

    GPIO_INTERRUPT_LOW_ENABLE 0x2c 原文標(biāo)題:SOC GPIO操作
    的頭像 發(fā)表于 11-01 11:06 ?100次閱讀