国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

【產(chǎn)品應(yīng)用】AWorksLP樣例詳解(MR6450)-- GPIO

AGk5_ZLG_zhiyua ? 來源:未知 ? 2022-12-16 11:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

e6135ef8-7cf2-11ed-8abf-dac502259ad0.gif AWorksLP對外設(shè)進行了高度抽象化,為同一類外設(shè)提供了相同的接口,應(yīng)用程序可以輕松跨平臺。本文以MR6450平臺為例,介紹AWorksLP GPIO外設(shè)基本用法。

e622fe1c-7cf2-11ed-8abf-dac502259ad0.jpg??簡介

GPIO(General Purpose Input and Output)是通用輸入輸出口。通俗地說,就是一些引腳,可以通過它們對外輸出電平信號或者通過它們讀取外部的電平信息。將I/O口用作普通輸入/輸出功能時,有兩種常見的使用方式:一種是用作普通的輸入/輸出接口;一種是用作中斷輸入接口,即當指定的輸入狀態(tài)事件發(fā)生(比如:下降沿)時,觸發(fā)用戶自定義的回調(diào)函數(shù)。

e622fe1c-7cf2-11ed-8abf-dac502259ad0.jpg??接口介紹

函數(shù)列表:

函數(shù)原型

簡要描述

aw_err_t aw_pin_cfg (int pin, uint32_t flags);

配置引腳屬性

aw_err_t aw_gpio_get (int pin);

讀取引腳的輸入/輸出值

aw_err_t aw_gpio_set (int pin, int value);

設(shè)置引腳輸出值

aw_err_t aw_gpio_toggle (int pin);

翻轉(zhuǎn)引腳的輸出值,即高電平變低電平,低電平變高電平

aw_err_t aw_gpio_trigger_cfg (int pin, uint32_t flags);

配置引腳“觸發(fā)條件”,觸發(fā)條件可位或

aw_err_t aw_gpio_trigger_connect (int pin, aw_pfuncvoid_t pfunc_callback, void *p_arg);

連接一個回調(diào)函數(shù)到引腳

aw_err_t aw_gpio_trigger_disconnect (int pin, aw_pfuncvoid_t pfunc_callback, void *p_arg);

斷開引腳的回調(diào)函數(shù)

aw_err_t aw_gpio_trigger_on (int pin);

開啟引腳的觸發(fā)功能

aw_err_t aw_gpio_trigger_off (int pin);

關(guān)閉指定引腳的觸發(fā)功能

使用aw_pin_cfg (int pin, uint32_t flags)接口配置pin為gpio功能時,flags參數(shù)詳見下表。

GPIO屬性配置表:

GPIO屬性

宏定義

描述

GPIO模式

AW_PIN_CFG_GPIO_INPUT

1<<0

輸入模式

AW_PIN_CFG_GPIO_OUTPUT

2<<0

輸出模式

AW_PIN_CFG_GPIO_OUTPUT_LOW

3<<0

輸出模式且輸出低

AW_PIN_CFG_GPIO_OUTPUT_HIGH

4<<0

輸出模式且輸出高

上下拉功能

AW_PIN_CFG_FLOAT

0<<3

浮空

AW_PIN_CFG_PULL_UP

1<<3

上拉

AW_PIN_CFG_PULL_DOWN

2<<3

下拉

AW_PIN_CFG_PULL_UP_DOWN

3<<3

同時使能上下拉

輸出模式

AW_PIN_CFG_OUTPUT_MODE_DRIVE

0<<5

直接輸出

AW_PIN_CFG_OUTPUT_MODE_OPEN_DRAIN

1<<5

開漏輸出

AW_PIN_CFG_OUTPUT_MODE_PUSH_PULL

2<<5

推挽輸出

配置時,flags參數(shù)可以是一個或者多個相關(guān)宏定義的組合,簡單示例如下:

aw_pin_cfg(pin, AW_PIN_CFG_GPIO_INPUT);
 /* 引腳配置為輸出,浮空(無上下拉),直接輸出 */
aw_pin_cfg(pin, AW_PIN_CFG_GPIO_OUTPUT);
aw_pin_cfg(pin, AW_PIN_CFG_GPIO_INPUT | AW_PIN_CFG_PULL_DOWN ); 
aw_pin_cfg(pin, AW_PIN_CFG_GPIO_OUTPUT| AW_PIN_CFG_OUTPUT_MODE_PUSH_PULL)
注意:
  • 調(diào)用配置時,若上表中GPIO屬性值存在缺省時,則會使用未偏移前對應(yīng)值為0的宏定義默認填充,如上述示例中l(wèi)ine3;
  • 配置時需一次性將flags進行傳入,不能每次傳遞一個屬性進行配置進行多次調(diào)用,否則可能和期望配置結(jié)果不匹配。
使用 aw_gpio_trigger_cfg(int pin, uint32_t flags)接口配置引腳中斷時,flags參數(shù)見下表。

GPIO中斷配置表:

宏定義

描述

AW_GPIO_TRIGGER_HIGH

高電平觸發(fā)

AW_GPIO_TRIGGER_LOW

低電平觸發(fā)

AW_GPIO_TRIGGER_RISE

上升沿觸發(fā)

AW_GPIO_TRIGGER_FALL

下降沿觸發(fā)

配置時,flags參數(shù)可以是一個或者多個上表宏定義的組合,簡單示例如下:

aw_gpio_trigger_cfg (pin, AW_GPIO_TRIGGER_HIGH);
aw_pin_cfg(pin, AW_GPIO_TRIGGER_RISE);
aw_pin_cfg(pin, AW_GPIO_TRIGGER_RISE | AW_GPIO_TRIGGER_HIGH ); 
/* 雙邊沿觸發(fā) */
aw_pin_cfg(pin, AW_GPIO_TRIGGER_RISE | AW_GPIO_TRIGGER_FALL);
注意:
  • 當設(shè)置為不合理條件觸發(fā)組合(如 AW_GPIO_TRIGGER_HIGH | AW_GPIO_TRIGGER_FALL)時,該函數(shù)會返回-AW_EINVAL。

e622fe1c-7cf2-11ed-8abf-dac502259ad0.jpg??使用樣例

AWorksLP SDK相關(guān)使用請參考《AWorksLP SDK快速入門(MR6450)——開箱體驗》一文,本文不再贅述。1.通用IO功能

{SDK}demosperipheralgpio路徑下為通用GPIO例程,例程具體代碼如下:

#include "aworks.h"
#include "aw_delay.h"
#include "aw_gpio.h"
#include "aw_vdebug.h"


/**
 * rief GPIO demo 入口
 * 
eturn 無
 */
void demo_gpio_entry (int gpio)
{
  int i = 0;


  aw_kprintf("
GPIO demo testing...
");


  /* LED以1s的周期閃爍5次 */
  for (i = 0; i < 5; i++) {
    aw_gpio_set(gpio, 0);


    aw_mdelay(500);


    aw_gpio_set(gpio, 1);


    aw_mdelay(500);
  }


  /* LED以0.2s的周期持續(xù)閃爍 */
  for (i = 0; i < 40; i++) {
    aw_gpio_toggle(gpio);
    aw_mdelay(100);
  }
 
  aw_kprintf("
GPIO demo exit...
");
}

上述代碼中使用aw_gpio_set和aw_gpio_toggle接口分別實現(xiàn)了500ms時間間隔的引腳5次反轉(zhuǎn)以及100ms時間間隔引腳40次反轉(zhuǎn)。在HPM的SDK中,傳入該例程函數(shù)的引腳為RUN燈,所以最終的實驗現(xiàn)象是LED燈先以較慢的速度閃爍,后以較快的速度閃爍,RUN燈的位置如圖1所示。

e65d55a8-7cf2-11ed-8abf-dac502259ad0.png

圖1運行燈

2.中斷功能

{SDK}demosperipheralint路徑下為通用中斷例程,例程具體代碼如下:

#include "aworks.h"
#include "aw_gpio.h"
#include "aw_sem.h"
#include "aw_vdebug.h"
#include "aw_delay.h"
#include "aw_int.h"


/**rief 記錄是否產(chǎn)生中斷 */
AW_SEMB_DECL_STATIC(__gpio_intr_semb);
#define TRIGGER_FLAG AW_GPIO_TRIGGER_RISE


static void __test_gpio_trig_isr (void* arg)
{
  int interrupt_pin = (int)arg;
#if TRIGGER_FLAG == AW_GPIO_TRIGGER_LOW || TRIGGER_FLAG == AW_GPIO_TRIGGER_HIGH
  /* 關(guān)閉觸發(fā)中斷,避免電平觸發(fā)時不停地進中斷導(dǎo)致程序無法繼續(xù)運行 */
  aw_gpio_trigger_off(interrupt_pin);
#endif
  AW_SEMB_GIVE(__gpio_intr_semb);
}


void demo_interrupt_entry (int output_pin, int interrupt_pin)
{
  aw_err_t  err;
  int     i;
  
  aw_kprintf("
interrupt demo testing...
");
  
   /* 信號量初始化 */
  AW_SEMB_INIT(__gpio_intr_semb, AW_SEM_EMPTY, AW_SEM_Q_FIFO);
  
  /* 連接中斷回調(diào)函數(shù) */
  err = aw_gpio_trigger_connect(interrupt_pin,
                 __test_gpio_trig_isr,
                 (void *)interrupt_pin);
  if (err != AW_OK) {
     aw_kprintf("gpio trigger connect failed!
");
     return;
   }
   
  /* 配置為 TRIGGER_FLAG 對應(yīng)方式觸發(fā) */
  err = aw_gpio_trigger_cfg(interrupt_pin, TRIGGER_FLAG);
  if (err != AW_OK) {
    aw_kprintf("gpio trigger cfg failed!
");
    return;
  }
   
  /* 開啟引腳的觸發(fā) */
  err = aw_gpio_trigger_on(interrupt_pin);
  if (err != AW_OK) {
    aw_kprintf("gpio trigger on failed!
");
    return;
  }
   
  for (i = 0; i < 50; i++) {
   
    /* 設(shè)置輸出管腳為低電平 */
    aw_gpio_set(output_pin, 0);
   
    /* 等待中斷觸發(fā) */
    err = AW_SEMB_TAKE(__gpio_intr_semb, 1000);
    if (err == AW_OK) {
      aw_kprintf("enter gpio interrupt!
");
    }
#if TRIGGER_FLAG == AW_GPIO_TRIGGER_LOW || TRIGGER_FLAG == AW_GPIO_TRIGGER_HIGH
    /* 打開在回調(diào)函數(shù)中關(guān)閉的觸發(fā)中斷 */
    err = aw_gpio_trigger_on(interrupt_pin);
    if (err != AW_OK) {
      aw_kprintf("gpio trigger on failed!
");
      return;
    }
#endif
    /* 設(shè)置輸出管腳為高電平 */
    aw_gpio_set(output_pin, 1);
      
    aw_mdelay(100);
  }
      
  /* 斷開中斷連接回調(diào)函數(shù) */
  aw_gpio_trigger_disconnect(interrupt_pin,
                __test_gpio_trig_isr,
                (void *)interrupt_pin);
      
  /* 關(guān)閉引腳的觸發(fā) */
  aw_gpio_trigger_off(interrupt_pin);
       
  /* 終止信號量 */
  AW_SEMB_TERMINATE(__gpio_intr_semb);
      
  aw_kprintf("interrupt demo exit...
");
}

在例程代碼中通過aw_gpio_trigger_connect、aw_gpio_trigger_cfg、aw_gpio_trigger_on三個接口配置interrupt_pin引腳中斷觸發(fā)模式為AW_GPIO_TRIGGER_RISE、中斷回調(diào)函數(shù)為__test_gpio_trig_isr并對中斷進行使能,同時配置output_pin持續(xù)翻轉(zhuǎn)作為中斷源的提供引腳,當output_pin 輸出滿足例程的中斷條件時,會觸發(fā)中斷進入__test_gpio_trig_isr函數(shù)釋放__gpio_intr_semb信號量,在例程中獲取信號量成功后并打印"enter gpio interrupt!"。

例程中默認使用中斷例程輸出信號引腳為PIN_PF08、中斷測試引腳為PF09,但由于本文測試所使用開發(fā)板并未引出該組引腳,故使用開發(fā)板上絲印URX1(PIN_PE24)做信號輸出引腳與UTX1(PIN_PE25)做中斷引腳進行測試,需修改main.c文件中TEST_OUTPUT_PIN與TEST_INTERRUPT_PIN宏定義,修改后如下所示:


#define TEST_OUTPUT_PIN     PIN_PE24
#define TEST_INTERRUPT_PIN    PIN_PE25 

修改完成后,重新編譯工程并下載固件至開發(fā)板中,將開發(fā)板絲印URX1與UTX1引腳短接,并使用串口工具連接至DUART接口,則可看到在上位機中打印下圖信息,表明中斷觸發(fā)成功。

e6ac7fb6-7cf2-11ed-8abf-dac502259ad0.png

圖2串口打印信息注意事項:
  • aw_gpio_trigger_connect函數(shù)所連接的回調(diào)函數(shù)是在中斷中進行調(diào)用的,故該函數(shù)的實現(xiàn)需盡量的簡短、高效,避免執(zhí)行時間過長,否則可能會影響OS的實時性;
  • 若中斷觸發(fā)條件為電平觸發(fā)時,需在中斷回調(diào)中關(guān)閉對應(yīng)引腳中斷,否則電平持續(xù)階段會一直產(chǎn)生中斷。

由于篇幅限制,樣例中僅選取了部分特性進行講解,在使用時需根據(jù)實際情況配置相應(yīng)的觸發(fā)條件以滿足項目需求,更多引腳屬性功能使用以及中斷組合特性可自行調(diào)整測試。

本文對GPIO外設(shè)接口及樣例做了詳細介紹,當然其他外設(shè)也會陸續(xù)發(fā)布,請大家關(guān)注后續(xù)推文更新~

e6c42332-7cf2-11ed-8abf-dac502259ad0.jpg

e6d703b2-7cf2-11ed-8abf-dac502259ad0.jpg

e7677d84-7cf2-11ed-8abf-dac502259ad0.jpge77bdd38-7cf2-11ed-8abf-dac502259ad0.jpge78e8cf8-7cf2-11ed-8abf-dac502259ad0.jpge7adb31c-7cf2-11ed-8abf-dac502259ad0.jpge7bcf584-7cf2-11ed-8abf-dac502259ad0.jpge7ce55fe-7cf2-11ed-8abf-dac502259ad0.jpg


原文標題:【產(chǎn)品應(yīng)用】AWorksLP樣例詳解(MR6450)-- GPIO

文章出處:【微信公眾號:ZLG致遠電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    13

    文章

    422

    瀏覽量

    32553

原文標題:【產(chǎn)品應(yīng)用】AWorksLP樣例詳解(MR6450)-- GPIO

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    固件燒錄速度實測:JTAG比UART快6.8倍

    在批量生產(chǎn)場景中,固件燒錄效率直接影響產(chǎn)線節(jié)拍與交付能力。如何選擇最優(yōu)燒錄方式?本文以ZLG致遠電子MR6450系列核心板為,通過實測數(shù)據(jù)為您解析。MR6450核心板MR6450是Z
    的頭像 發(fā)表于 01-27 11:34 ?278次閱讀
    固件燒錄速度實測:JTAG比UART快6.8倍

    【MCU學習】GPIO詳解

    本實驗通過一個“小實驗框架 GPIO Mode Lab”,在同一個 GPIO 引腳上依次配置不同模式,并用 ADC 探頭測量電壓、同時讀取數(shù)字電平,系統(tǒng)化地觀察。
    的頭像 發(fā)表于 01-24 11:45 ?3604次閱讀
    【MCU學習】<b class='flag-5'>GPIO</b><b class='flag-5'>詳解</b>

    瑞薩RL78/F22 MCU基于e2studio開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用工程

    瑞薩RL78/F22 MCU基于e2studio開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用工程
    的頭像 發(fā)表于 01-14 15:31 ?6000次閱讀
    瑞薩RL78/F22 MCU基于e2studio開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    瑞薩RL78/F25 MCU基于IAR開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用工程

    瑞薩RL78/F25 MCU基于IAR開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用工程
    的頭像 發(fā)表于 01-05 14:59 ?6905次閱讀
    瑞薩RL78/F25 MCU基于IAR開發(fā)環(huán)境創(chuàng)建觸摸應(yīng)用<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    基于開源鴻蒙的圖片編輯開發(fā)(2)

    本期內(nèi)容介紹基于開源鴻蒙在RK3568上開發(fā)圖片編輯的全流程,分為上篇和下篇,本篇為下篇,主要介紹標記、保存圖片功能。
    的頭像 發(fā)表于 10-31 09:19 ?3212次閱讀
    基于開源鴻蒙的圖片編輯開發(fā)<b class='flag-5'>樣</b><b class='flag-5'>例</b>(2)

    基于開源鴻蒙的圖片編輯開發(fā)(1)

    本期內(nèi)容介紹基于開源鴻蒙在RK3568上開發(fā)圖片編輯的全流程,分為上篇和下篇,本篇為上篇,主要介紹添加相冊圖片、編譯圖片功能。
    的頭像 發(fā)表于 10-31 09:16 ?3069次閱讀
    基于開源鴻蒙的圖片編輯開發(fā)<b class='flag-5'>樣</b><b class='flag-5'>例</b>(1)

    新潔能NCE65TF099:高頻開關(guān)性能如何賦能不同產(chǎn)品應(yīng)用

    在當今快速發(fā)展的電子技術(shù)領(lǐng)域,高頻開關(guān)性能已成為衡量功率器件性能的關(guān)鍵指標之一。新潔能憑借其卓越的高頻開關(guān)性能,正在為各種產(chǎn)品應(yīng)用帶來前所未有的賦能與變革。本文將深入探討新潔能NCE65TF099
    的頭像 發(fā)表于 10-20 16:21 ?825次閱讀
    新潔能NCE65TF099:高頻開關(guān)性能如何賦能不同<b class='flag-5'>產(chǎn)品應(yīng)用</b>?

    基于開源鴻蒙的AVPlayer視頻播控開發(fā)

    在開源鴻蒙生態(tài)建設(shè)中,多媒體能力是構(gòu)建豐富用戶體驗的核心要素。本開發(fā)基于AVPlayer實現(xiàn),AvPlayer支持流媒體和本地資源解析、媒體資源解封裝、視頻解碼和渲染功能,適用于對媒體資源進行端
    的頭像 發(fā)表于 08-21 10:22 ?2824次閱讀
    基于開源鴻蒙的AVPlayer視頻播控開發(fā)<b class='flag-5'>樣</b><b class='flag-5'>例</b>

    RISC-V和ARM有何區(qū)別?

    在微處理器架構(gòu)領(lǐng)域,ARM與RISC-V是兩個備受關(guān)注的體系。ZLG致遠電子在推出ARM核心版后,又推出了基于RISC-V的MR6450核心版,這引發(fā)了人們對這兩種架構(gòu)差異的深入探討。ARM
    的頭像 發(fā)表于 06-24 11:38 ?2027次閱讀
    RISC-V和ARM有何區(qū)別?

    基于瑞薩電子RA8T2 sensorless方案的工程 可對電流環(huán)進行TCM化設(shè)置

    基于瑞薩電子RA8T2 sensorless方案的工程 可對電流環(huán)進行TCM化設(shè)置
    的頭像 發(fā)表于 06-04 18:29 ?1112次閱讀

    AS32X601驅(qū)動系列教程 GPIO_按鍵檢測詳解

    在嵌入式系統(tǒng)開發(fā)中,GPIO(通用輸入輸出端口)是實現(xiàn)硬件與軟件交互的關(guān)鍵組件。本節(jié)主要利用的時GPIO的輸入采集功能,本節(jié)的主要功能為,讀取板載按鍵,當按鍵按下時,對應(yīng)led亮起,抬起按鍵,對應(yīng)
    的頭像 發(fā)表于 05-23 16:44 ?836次閱讀
    AS32X601驅(qū)動系列教程 <b class='flag-5'>GPIO</b>_按鍵檢測<b class='flag-5'>詳解</b>

    AS32X601驅(qū)動系列教程 GPIO_點亮LED詳解

    在嵌入式開發(fā)的奇妙旅程中,GPIO(通用輸入輸出接口)作為芯片與外部世界交互的重要橋梁,扮演著不可或缺的角色。從簡單的 LED 燈控制,到復(fù)雜的外設(shè)通信,GPIO 的靈活運用為開發(fā)者打開了無限可能
    的頭像 發(fā)表于 05-23 16:14 ?763次閱讀
    AS32X601驅(qū)動系列教程 <b class='flag-5'>GPIO</b>_點亮LED<b class='flag-5'>詳解</b>

    全志科技機器人專用芯片MR527與MR813特性概述

    能力和豐富的傳感器接口,支持GPIO、PCIe、SDIO、USB、SPI、TWI、UART、GPADC、LRADC、PWM等常用接口。適用于掃地機、割草機、服務(wù)機器人、四足機器人等產(chǎn)品形態(tài)。 產(chǎn)品特點
    的頭像 發(fā)表于 04-24 14:58 ?3831次閱讀
    全志科技機器人專用芯片<b class='flag-5'>MR</b>527與<b class='flag-5'>MR</b>813特性概述

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例
    發(fā)表于 04-23 11:21 ?0次下載

    單片機學習之GPIO

    今日分享如何通過手冊理解單片機IO知識點含義解釋:1.GPIO:同我們常說的IO口一,GeneralPurposeInputOutput(通用輸入/輸出)簡稱為GPIO,每個GPIO
    發(fā)表于 03-26 14:53 ?0次下載