ML307R OpenCPU GPIO使用

一、GPIO使用流程圖

二、函數介紹

三、GPIO 點亮LED

四、代碼下載地址

一、GPIO使用流程圖

這個圖是官網找到的,ML307R GPIO引腳電平默認為1.8V,需注意和外部電路的電平匹配,具體可參考《ML307R_硬件設計手冊_OpenCPU版本適用.pdf》中的描述。

二、函數介紹

SDK中有一個GPIO常規使用方法的demo程序,GPIO demo提供了GPIO參數設置、輸入輸出設置、電平設置和中斷設置等功能示例程序,可在cm_demo_gpio.c文件中查看

2.1 cm_gpio_cfg_t結構體說明

typedef struct{cm_gpio_mode_e mode;/*!< 不支持*/cm_gpio_direction_e direction;cm_gpio_pull_e pull;
} cm_gpio_cfg_t;

這個主要是看 cm_gpio_direction_e direction;和cm_gpio_pull_e pull

cm_gpio_direction_e direction 是設置GPIO是輸入還是輸出

/** I/O方向 */
typedef enum{CM_GPIO_DIRECTION_INPUT = 0,CM_GPIO_DIRECTION_OUTPUT,
}cm_gpio_direction_e;

cm_gpio_pull_e pull 是設置上下拉

/** 上/下拉 */
typedef enum{CM_GPIO_PULL_NONE,CM_GPIO_PULL_DOWN,CM_GPIO_PULL_UP,
}cm_gpio_pull_e;

比如我是要控制lED 閃爍,那么可以配置如下

    cm_gpio_cfg_t cfg = {0};cfg.direction = CM_GPIO_DIRECTION_OUTPUT;  //配置成輸出cfg.pull = CM_GPIO_PULL_UP;               //上拉

2.2 cm_iomux_set_pin_func 函數介紹

 * @brief IOMUX 設置引腳復用功能** @param [in] pin PIN 定義號* @param [in] fun FUN 定義號**  @return  *    = 0  - 成功 \n*    = -1 - 失敗*/
int32_t cm_iomux_set_pin_func(cm_iomux_pin_e pin, cm_iomux_func_e fun);

此函數第一個參數 cm_iomux_pin_e 是一個枚舉,代表的是那個管腳,這個要和GPIO功能的管腳區分,比如我這里使用GPIO4 控制LED燈,可以查看 “ML307R_OpenCPU資源綜述”手冊 ,LED對應的引腳號是16,所以我們選擇CM_IOMUX_PIN_16,而不是對應的GPIO4,這里需要注意。

第二個參數是復用功能 ,從下圖可以看到GPIO4 是OpenCPU復用功能1,既選擇CM_IOMUX_FUNC_FUNCTION1

2.3? cm_gpio_init介紹

/***  @brief 初始化GPIO*  *  @param [in] gpio_num GPIO號*  @param [in] cfg 配置*  *  @return *    = 0 - 成功 \n*    < 0 - 失敗, 返回值為錯誤碼*  *  @details 初始化之前一定要先設置引腳復用*/
int32_t cm_gpio_init(cm_gpio_num_e gpio_num, cm_gpio_cfg_t *cfg);

第一個參數是cm_gpio_num_e 是指對應的GPIO,LED控制是使用了 GPIO4,既選擇CM_GPIO_NUM_4

第二個參數 cm_gpio_cfg_t,就是上面配置的方向和上下拉

2.4 cm_gpio_set_level函數介紹

/***  @brief 設置輸出電平*  *  @param [in] gpio_num GPIO號*  @param [in] level 輸出電平*  *  @return *    = 0 - 成功 \n*    < 0 - 失敗, 返回值為錯誤碼*  *  @details More details*/
int32_t cm_gpio_set_level(cm_gpio_num_e gpio_num, cm_gpio_level_e level);

這個函數設置對應GPIO 輸出高低電平

第一個參數 cm_gpio_num_e? 對應的GPIO

第二個參數cm_gpio_level_e 對應的是設置的電平

/** 高低電平 */
typedef enum{CM_GPIO_LEVEL_LOW,CM_GPIO_LEVEL_HIGH,
}cm_gpio_level_e;

2.5 cm_gpio_get_level函數介紹

/***  @brief 讀取輸入電平*  *  @param [in] gpio_num GPIO號*  @param [out] level 輸入電平*  *  @return *    = 0 - 成功 \n*    < 0 - 失敗, 返回值為錯誤碼*  *  @details More details*/
int32_t cm_gpio_get_level(cm_gpio_num_e gpio_num, cm_gpio_level_e *level);

這個函數是讀對應的GPIO 電平

第一個參數 cm_gpio_num_e? 對應的GPIO

第二個參數cm_gpio_level_e 對應的是讀的電平

三、GPIO 點亮LED


osTimerId_t gpio_timer_id = NULL;// LED定時器回調函數
void gpio_TimerCallback(void *argument) {static unsigned char i = 0;if(i == 0){cm_gpio_set_level(CM_GPIO_NUM_4, CM_GPIO_LEVEL_LOW);i = 1;}else{cm_gpio_set_level(CM_GPIO_NUM_4, CM_GPIO_LEVEL_HIGH);i = 0;}
}
void gpio_create_timer(void)
{osTimerAttr_t timer_attr = {.name = "Gpio_Timer",
};gpio_timer_id = osTimerNew(gpio_TimerCallback, osTimerPeriodic, NULL, &timer_attr);osTimerStart(gpio_timer_id, 200);
}void gpio_set_output(void)
{cm_gpio_cfg_t cfg = {0};cfg.direction = CM_GPIO_DIRECTION_OUTPUT;cfg.pull = CM_GPIO_PULL_UP;cm_iomux_set_pin_func(CM_IOMUX_PIN_16, CM_IOMUX_FUNC_FUNCTION1);//初始化之前一定要先設置引腳復用cm_gpio_init(CM_GPIO_NUM_4, &cfg);gpio_create_timer();
}void bsp_gpio_init(void)
{gpio_set_output();}

以上就是控制LED燈閃爍,在定時器里面實現 ,實際上是1S閃爍一次

四、代碼下載地址

ML307R OpenCPU GPIO使用 代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16318.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16318.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16318.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

零基礎PHP入門(一)選擇IDE和配置環境

配置環境 官網下載安裝包&#xff0c;windows https://windows.php.net/download#php-8.3 我是下載的最新版&#xff0c;也可以切換其他版本 https://windows.php.net/downloads/releases/archives/ 下載好壓縮文件后&#xff0c;雙擊解壓到一個目錄 D:\soft\php 復制ph…

成都愛爾眼科醫院《中、歐國際近視手術大數據白皮書2.0》解讀會圓滿舉行

2024年5月12日&#xff0c;愛爾眼科聯合中國健康促進基金會健康傳播與促進專項基金、新華社新媒體中心與中南大學愛爾眼科研究院、愛爾數字眼科研究所重磅發布《中、歐國際近視手術大數據白皮書2.0》。這是繼2021、2022年在國內相繼發布《國人近視手術白皮書》、《2022中、歐近…

Ubuntu系統初始化相關配置

目錄 Ubuntu文件傳輸: ubuntu怎么打開word:安裝wps(應用中心搜索) Ubuntu安裝annoconda

模型蒸餾筆記

文章目錄 一、什么是模型蒸餾二、如何蒸餾三、實踐四、參考文獻 一、什么是模型蒸餾 Hinton在NIPS2014提出了知識蒸餾&#xff08;Knowledge Distillation&#xff09;的概念&#xff0c;旨在把一個大模型或者多個模型ensemble學到的知識遷移到另一個輕量級單模型上&#xff0…

【SpringBoot】SpringBoot中防止接口重復提交(單機環境和分布式環境)

&#x1f4dd;個人主頁&#xff1a;哈__ 期待您的關注 目錄 &#x1f33c;前言 &#x1f512;單機環境下防止接口重復提交 &#x1f4d5;導入依賴 &#x1f4c2;項目結構 &#x1f680;創建自定義注解 ?創建AOP切面 &#x1f697;創建Conotroller &#x1f4bb;分布…

構建高效的在線培訓機構CRM應用架構實踐

在當今數字化時代&#xff0c;在線培訓已成為教育行業的重要趨勢之一。為了提供更好的學習體驗和管理服務&#xff0c;在線培訓機構需要構建高效的CRM&#xff08;Customer Relationship Management&#xff09;應用架構。本文將探討在線培訓機構CRM應用架構的設計與實踐。 一、…

PTA 6-3 入侵者圍剿第二關3情報解密

經過上一步已經將2個分隊得到的秘密情報合并到一起&#xff0c;并進行了信息去重。接下來&#xff0c;經過情報的分析&#xff0c;發現情報進行加密的方式&#xff0c;將鏈表從正中間斷開&#xff0c;然后后面的鏈表全部接到前面&#xff0c;輸出來的次序就是敵方的武器發射次序…

綠色智能:AI機器學習在環境保護中的深度應用與實踐案例

&#x1f9d1; 博主簡介&#xff1a;阿里巴巴嵌入式技術專家&#xff0c;深耕嵌入式人工智能領域&#xff0c;具備多年的嵌入式硬件產品研發管理經驗。 &#x1f4d2; 博客介紹&#xff1a;分享嵌入式開發領域的相關知識、經驗、思考和感悟&#xff0c;歡迎關注。提供嵌入式方向…

在vps的centos系統中用Python和青龍檢測網頁更新

環境&#xff1a;vps&#xff0c;centos7&#xff0c;python3.8.10&#xff0c;青龍面板&#xff08;用寶塔安裝&#xff09; 任務&#xff1a;用python代碼&#xff0c;監控一個網站頁面是否有更新&#xff08;新帖子&#xff09;&#xff0c;若有&#xff0c;則提醒&#xf…

【數據結構】二叉樹的認識與實現

目錄 二叉樹的概念&#xff1a; 二叉樹的應用與實現&#xff1a; 二叉樹實現接口&#xff1a; 通過前序遍歷的數組"ABD##E#H##CF##G##"構建二叉樹 二叉樹節點個數?編輯 二叉樹葉子節點個數 二叉樹第k層節點個數 二叉樹查找值為x的節點?編輯 二叉樹前序遍…

XSS+CSRF攻擊

一、前言 在DVWA靶場的XSS攻擊下結合CSRF攻擊完成修改密碼 也就是在具有XSS漏洞的情況下實施CSRF攻擊 二、實驗 環境配置與上一篇博客一致&#xff0c;有興趣可以參考CSRF跨站請求偽造實戰-CSDN博客 首先登錄DVWA&#xff0c;打開XSS模塊 name隨便輸入&#xff0c;message…

嵌入式0基礎開始學習 Ⅲ Linux基礎(1)Linux基本命令

1.APT unbuntu中功能最強大的命令行軟件包管理工具&#xff0c; 用來獲取&#xff0c;安裝&#xff0c;編譯&#xff0c;卸載&#xff0c;查詢軟件包。 工作原理; /etc/apt/sources.list -> 文件 用來指針ubuntu的軟件源服務器…

HQL面試題練習 —— 合并數據

題目來源&#xff1a;京東 目錄 1 題目2 建表語句3 題解 1 題目 已知有數據 A 如下&#xff0c;請分別根據 A 生成 B 和 C。 數據A ------------ | id | name | ------------ | 1 | aa | | 2 | aa | | 3 | aa | | 4 | d | | 5 | c | | 6 | aa…

Android 使用 ActivityResultLauncher 申請權限

前面介紹了 Android 運行時權限。 其中&#xff0c;申請權限的步驟有些繁瑣&#xff0c;需要用到&#xff1a;ActivityCompat.requestPermissions 函數和 onRequestPermissionsResult 回調函數&#xff0c;今天就借助 ActivityResultLauncher 來簡化書寫。 步驟1&#xff1a;創…

基于FPGA的VGA協議實現

文章目錄 一、VGA介紹1.1 VGA原理1.2VGA電路 二、配置三、實現3.1 字符顯示3.2圖片顯示 四、代碼4.1.vga驅動模塊4.2數據模塊4.3按鍵消抖模塊4.4頂層模塊4.5TCL引腳綁定 參考 一、VGA介紹 1.1 VGA原理 VGA接口 最主要的幾根線&#xff1a; VGA其實就是相當于一塊芯片&#…

gcc g++不同版本切換命令

sudo update-alternatives --config g sudo update-alternatives --config gcc ubuntu20.04 切換 gcc/g 版本_ubuntu降低g版本-CSDN博客

YOLOv10嘗鮮測試五分鐘極簡配置

最近清華大學團隊又推出YOLOv10&#xff0c;真是好家伙了。 安裝&#xff1a; pip install supervision githttps://github.com/THU-MIG/yolov10.git下載權重&#xff1a;https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt 預測&#xff1a; from ult…

Superset,基于瀏覽器的開源BI工具

BI工具是數據分析的得力武器&#xff0c;目前市場上有很多BI軟件&#xff0c;眾所周知的有Tableau、PowerBI、Qlikview、帆軟等&#xff0c;其中大部分是收費軟件或者部分功能收費。這些工具一通百通&#xff0c;用好一個就夠了&#xff0c;重要的是分析思維。 我一直用的Tabl…

【HMGD】STM32/GD32 CAN通信

各種通信協議速度分析 協議最高速度(btis/s)I2C400KCAN1MCAN-FD5M48510MSPI36M CAN協議圖和通信幀 CubeMX CAN配置說明 CAN通信波特率 APB1頻率 / 分頻系數 /&#xff08;BS1 BS2 同步通信段&#xff09;* 1000 ? 42 / 1 / (111) * 1000 ? 14,000 KHz ? 1400000…

吉林大學計科21級《軟件工程》期末考試真題

文章目錄 21級期末考試題一、單選題&#xff08;2分一個&#xff0c;十個題&#xff0c;一共20分&#xff09;二、問答題&#xff08;5分一個&#xff0c;六個題&#xff0c;一共30分&#xff09;三、分析題&#xff08;一個10分&#xff0c;一共2個&#xff0c;共20分&#xf…