GPIO輸出速度(ARM-GD32)

?單片機輸出速度對GPIO硬件的影響

如果T為100ns 那么2/3*100ns = 67ns 那么tr + tf = 38 ns (也就是不能超過32ns)

tr 和tf和什么東西有關如何去控制

CL 是一個電容,電容會改變和影響電壓變化的速率,輸出高低電平也就是對電容進行充電和放電根據上圖電容充電的公式DV / DT 電壓變化的速率:因此在負載電容一定的情況下,電壓變化的速率越快,需要的電流l越大,單片機的功耗越高。

注:

在決定使用多頻率時遵循夠用原則,盡可能的節省MCU資源

輸出交流特性參數

基于hal庫的方式驅動點亮發光二級管

嵌入式通用軟件架構框圖

GD32F303固件庫

使用hal庫的方式點亮led燈

創建一個項目:在項目下創建4個文件夾,同時在項目的文件路徑下創建4個相同的文件夾

拷貝ARM內核文件


在項目中添加文件

添加ARM內核相關文件

配置完成后結果展示

keil配置

?路徑的添加在c或者c++的選項卡中

創建c文件main.c

?


?led燈閃爍實驗

配置hal庫函數實現led燈的亮滅(與標準庫差不多)

注:查看函數定義的方式有兩種

1:一種是直接查看官方給出的參考手冊,

2:一種是在keil軟件的內部直接查看提供的頭文件和c語言文件,我這里推薦兩種方式結合使用

?本次實驗使用到的庫函數

void rcu_deinit(void);
/* enable the peripherals clock */
void rcu_periph_clock_enable(rcu_periph_enum periph);
/* disable the peripherals clock */
void rcu_periph_clock_disable(rcu_periph_enum periph);
/* enable the peripherals clock when sleep mode */
void rcu_periph_clock_sleep_enable(rcu_periph_sleep_enum periph);
/* disable the peripherals clock when sleep mode */
void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph);
/* reset GPIO port */
void gpio_deinit(uint32_t gpio_periph);
/* reset alternate function I/O(AFIO) */
void gpio_afio_deinit(void);
/* GPIO parameter initialization */
void gpio_init(uint32_t gpio_periph, uint32_t mode, uint32_t speed, uint32_t pin);/* set GPIO pin bit */
void gpio_bit_set(uint32_t gpio_periph, uint32_t pin);
/* reset GPIO pin bit */
void gpio_bit_reset(uint32_t gpio_periph, uint32_t pin);
/* write data to the specified GPIO pin */
void gpio_bit_write(uint32_t gpio_periph, uint32_t pin, bit_status bit_value);
/* write data to the specified GPIO port */
void gpio_port_write(uint32_t gpio_periph, uint16_t data);

led燈點亮函數

#include <stdint.h>
#include "gd32f30x.h"
/*1:  rcc 外設時鐘控制2: 初始化引腳
*/static void Delay(uint32_t count)
{while (count--);
}int main(void)
{// rcu 初始化GPIO時鐘,這里初始化的是GPIOA的時鐘rcu_periph_clock_enable(RCU_GPIOA);// 初始化GPIO通用輸入輸出引腳gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);// 第一個參數表示哪一個GPIO口// 第二個參數表示使用哪一種模式// 第三個參數表示時鐘頻率// 第四個參數表示使用的是哪一個引腳while(1){// 設置引腳電平gpio_bit_set(GPIOA, GPIO_PIN_8); Delay(1000000);gpio_bit_reset(GPIOA, GPIO_PIN_8);Delay(1000000);//		    // gpio_bit_set可以也可以輸出引腳電平
//		    gpio_bit_write(GPIOA, GPIO_PIN_8, SET);
//		    Delay(1000000);
//			gpio_bit_write(GPIOA, GPIO_PIN_8, RESET);
//		    Delay(1000000);}	
}

按鍵控制實驗

相關庫函數

/* get GPIO pin input status */
FlagStatus gpio_input_bit_get(uint32_t gpio_periph, uint32_t pin);
/* get GPIO port input status */
uint16_t gpio_input_port_get(uint32_t gpio_periph);
/* get GPIO pin output status */
FlagStatus gpio_output_bit_get(uint32_t gpio_periph, uint32_t pin);
/* get GPIO port output status */
uint16_t gpio_output_port_get(uint32_t gpio_periph);
/* configure GPIO pin remap */
void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue);

?按鍵按下時點亮led燈

#include <stdint.h>
#include "gd32f30x.h"
/*1:  rcc 外設時鐘控制2: 初始化引腳
*/static void Delay(uint32_t count)
{while (count--);
}int main(void)
{// rcu 初始化GPIO時鐘,這里初始化的是GPIOA的時鐘rcu_periph_clock_enable(RCU_GPIOA);// 初始化GPIO通用輸入輸出引腳gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);// 第一個參數表示哪一個GPIO口// 第二個參數表示使用哪一種模式// 第三個參數表示時鐘頻率// 第四個參數表示使用的是哪一個引腳while(1){// 獲取GPIO引腳的輸入值,如果輸入值為0表示按鍵按下,程序點亮led燈while(gpio_input_bit_get(GPIOA,GPIO_PIN_0) == 0){gpio_bit_write(GPIOA,GPIO_PIN_8,SET);}gpio_bit_write(GPIOA,GPIO_PIN_8,RESET);}	
}

......

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

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

相關文章

【噪聲學習】SELFIE:更新不干凈樣本的魯棒性深度學習

SELFIE: Refurbishing Unclean Samples for Robust Deep Learning 摘要: 由于深度神經網絡具有極高的表達能力,其副作用是即使在標簽噪聲極高的情況下也能完全記住訓練數據。為了克服對噪聲標簽的過度擬合,我們提出了一種名為 SELFIE 的新型魯棒訓練方法。我們的主要想法是…

俄羅斯方塊【python,小游戲】

俄羅斯方塊&#xff08;Tetris&#xff09;是一款經典的俄羅斯益智游戲&#xff0c;游戲的核心玩法是通過移動、旋轉和放置不同形狀的方塊&#xff0c;使它們在游戲界面的底部形成完整的水平線。一旦水平線填滿&#xff0c;就會被清除&#xff0c;為新的方塊騰出空間。 在 Pyt…

Python GUI開發- PyQt5 開發小工具環境入門

前言 常見的python開發gui的庫有 Tkinter&#xff0c; PyQt5&#xff0c; wxPython等。本教程是選擇PyQt5 開發桌面小工具。 環境準備 只需pip安裝即可快速準備好開發環境 pip install pyqt5快速開始 創建一個空的window窗口 Qapplication()&#xff1a;每個GUI都必須包含…

【Linux】:文本編輯與輸出命令 輕松上手nano、echo和cat

&#x1f3a5; 嶼小夏 &#xff1a; 個人主頁 &#x1f525;個人專欄 &#xff1a; Linux深造日志 &#x1f304; 莫道桑榆晚&#xff0c;為霞尚滿天&#xff01; 文章目錄 &#x1f4d1;前言一、nano1.1 打開文件&#xff1a;1.2 常用快捷鍵&#xff1a;1.3 其他功能&#xff…

讀人工智能時代與人類未來筆記03_演變

1. 演變 1.1. 每個社會都找到了屬于自己的一套適應世界的方法 1.1.1. 適應的核心&#xff0c;是有關人類心智與現實之間關系的概念 1.1.2. 人類認識周圍環境的能力 1.1.2.1. 這種能力通過知識獲得&#xff0c;同時也受到知識…

【渲染數學-01】如何模擬靜態流(上)

文章目錄 一、說明二、摘要三、簡介四、穩定的納維-斯托克斯4.1 基本方程4.2 解決方法 一、說明 關于流體物質的仿真和模擬&#xff0c;需要流體理論方面的一般知識。我們這里從基本流體方程入手&#xff0c;詳細解釋如何實現流體仿真的每一個具體步驟。 二、摘要 構建類似流體…

C# 實現郵件推送功能

&#x1f3c6;作者&#xff1a;科技、互聯網行業優質創作者 &#x1f3c6;專注領域&#xff1a;.Net技術、軟件架構、人工智能、數字化轉型、DeveloperSharp、微服務、工業互聯網、智能制造 &#x1f3c6;歡迎關注我&#xff08;Net數字智慧化基地&#xff09;&#xff0c;里面…

詳解pytorch中循環神經網絡(RNN、LSTM、GRU)的維度

詳解pytorch中循環神經網絡&#xff08;RNN、LSTM、GRU&#xff09;的維度 RNNtorch.nn.rnn詳解RNN輸入輸出維度 LSTMtorch.nn.LSTM詳解LSTM輸入輸出維度 GRUtorch.nn.GRU詳解GRU輸入輸出維度 三種RNN的示例 首先如果你對RNN、LSTM、GRU不太熟悉&#xff0c;可點擊查看。 RNN …

python數據可視化:層次聚類熱圖clustermap()

【小白從小學Python、C、Java】 【考研初試復試畢業設計】 【Python基礎AI數據分析】 python數據可視化&#xff1a; 層次聚類熱圖 clustermap() [太陽]選擇題 請問關于以下代碼表述錯誤的選項是&#xff1f; import seaborn as sns import matplotlib.pyplot as plt import n…

代碼隨想錄—— 填充每個節點的下一個右側節點指針(Leetcode116)

題目鏈接 層序遍歷 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _…

開源的全自動生成視頻文案、視頻素材、視頻字幕、視頻背景音樂的AI項目

網址 https://github.com/harry0703/MoneyPrinterTurbo 只需提供一個視頻 主題 或 關鍵詞 &#xff0c;就可以全自動生成視頻文案、視頻素材、視頻字幕、視頻背景音樂&#xff0c;然后合成一個高清的短視頻。 如果用來做視頻&#xff0c;可以先收藏一下&#xff0c;值得本地…

51 單片機[2-1]:點亮一個LED

一、在 Keil5 中新建項目 打開 Keil5 &#xff0c;點擊 Project —— new μVision Project 新建文件夾 KeilProject &#xff0c;以后的項目都在這個文件夾下&#xff0c;再建一個文件夾 2-1 點亮一個LED。在該文件夾下創建名為 Project 的文件&#xff0c;并保存。推薦起這…

Python快速入門3:面向對象OOP(需要有編程基礎)

面向對象是什么&#xff1a; 面向對象編程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一種編程范式&#xff0c;它以對象為基礎&#xff0c;將數據和操作封裝在一起以創建可重用的代碼模塊。在面向對象編程中&#xff0c;對象是程序的基本單元&…

mysql實戰題目練習

1、創建和管理數據庫 創建一個名為school的數據庫。 列出所有的數據庫&#xff0c;并確認school數據庫已經創建。 如果school數據庫已經存在&#xff0c;刪除它并重新創建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…

Spring Boot:異常處理

Spring Boot 前言使用自定義錯誤頁面處理異常使用 ExceptionHandler 注解處理異常使用 ControllerAdvice 注解處理異常使用配置類處理異常使用自定義類處理異常 前言 在 Spring Boot 中&#xff0c;異常處理是一個重要的部分&#xff0c;可以允許開發者優雅地處理應用程序中可…

復利效應(應用于成長)

應用 每個人在智力、知識、經驗上&#xff0c;復利效應都一樣&#xff0c;只要能積累的東西&#xff0c;基本上最終都會產生復利效應。 再來看一下復利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用時&#xff0c;一定要注意4個限定條件&a…

AI圖書推薦:ChatGPT等生成式AI在高等教育中的應用

自2022年11月以來&#xff0c;ChatGPT及其在高等教育各個層面的影響已成為所有教育對話的核心內容。Chan和Colloton所著的書籍是首批全面探討ChatGPT與生成式人工智能&#xff08;GenAI&#xff09;在高等教育中應用及影響的作品之一。 該書深入研究了針對專業環境定制的AI素養…

js中Array的2個容易被遺忘的函數some和array

Array.prototype.some() 和 Array.prototype.every() 是 JavaScript 中的兩個容易被遺忘的數組方法。它們都用于檢查數組中的元素是否滿足某個條件。 1. Array.prototype.some() some() 方法用于檢查數組中至少有一個元素滿足給定的條件。當找到滿足條件的元素時&#xff0c;…

基礎學習-Git(分布式版本控制系統)

學習視頻推薦 http://【黑馬程序員Git全套教程&#xff0c;完整的git項目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git環境配置 安裝Git Git下…

wireshark_概念

ARP (Address Resolution Protocol&#xff09;協議&#xff0c;即地址解析協議。該協議的功能就是將IP地址解析成MAC地址。 混雜模式 抓取經過網卡的所有數據包&#xff0c;包括發往本網卡和非發往本網卡的。 非混雜模式 只抓取目標地址是本網卡的數據包&#xff0c;對于發往…