立創·天空星開發板-GD32F407VE-EXTI

本文以 立創·天空星開發板-GD32F407VET6-青春版 作為學習的板子,記錄學習筆記。

立創·天空星開發板-GD32F407VE-EXTI

    • 中斷
    • 硬件觸發中斷示例
    • 軟件觸發中斷示例

中斷

中斷分為內部中斷和外部中斷

外部中斷是由外部設備(如按鍵、傳感器、通信接口等)產生的中斷請求信號,需要通過中斷控制器進行處理。

通常情況下,外部中斷是通過中斷輸入引腳連接到中斷控制器,由中斷控制器檢測到外部中斷請求,然后觸發相應的中斷服務程序進行處理。

內部中斷是由處理器內部產生的中斷請求信號,通常是由串口、定時器、DMA控制器、系統時鐘等硬件設備產生的中斷請求,需要通過中斷控制器進行處理。

與外部中斷不同的是,內部中斷不需要外部設備的觸發,而是由硬件設備自身產生中斷請求,由中斷控制器檢測到并觸發相應的中斷服務程序進行處理。

中斷思維導圖

硬件觸發中斷示例

使用外部中斷來檢測 PA0 的電平變化。代碼如下:

#include "gd32f4xx.h"
#include "systick.h"#include "ExtendedUSART.h"// 核心板 PA0 引腳觸發中斷的配置
void EXTI0_config() {// PA0rcu_periph_clock_enable(RCU_GPIOA);gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);// SYSCFGrcu_periph_clock_enable(RCU_SYSCFG);syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN0);// NVICnvic_irq_enable(EXTI0_IRQn, 2, 2);// EXTIexti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_BOTH);exti_interrupt_enable(EXTI_0);exti_interrupt_flag_clear(EXTI_0);
}void EXTI0_IRQHandler() {if(SET == exti_interrupt_flag_get(EXTI_0)) {exti_interrupt_flag_clear(EXTI_0);if(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {printf("EXTI_0 interrupted by PA0 released!");} else {printf("EXTI_0 interrupted by PA0 pressed!");}}
}int main(void) {systick_config();EXTI0_config();USART0_config();USART0_send_string("GD32 is running!\r\n");while(1) { }
}

軟件觸發中斷示例

#include "gd32f4xx.h"
#include "systick.h"#include "ExtendedUSART.h"// 軟件觸發中斷的配置
void EXTI2_config() {// NVICnvic_irq_enable(EXTI2_IRQn, 2, 2);// EXTIexti_init(EXTI_2, EXTI_INTERRUPT, EXTI_TRIG_NONE);exti_interrupt_enable(EXTI_2);exti_interrupt_flag_clear(EXTI_2);
}void EXTI2_IRQHandler() {if(SET == exti_interrupt_flag_get(EXTI_2)) {exti_interrupt_flag_clear(EXTI_2);printf("EXTI_2 interrupted!\n");}
}void USART0_on_received(uint8_t* dat, uint32_t len) {printf("received data: %s. ", dat);// 當串口收到數據后。手動觸發中斷exti_software_interrupt_enable(EXTI_2);
}int main(void) {systick_config();EXTI2_config();USART0_config();USART0_send_string("GD32 is running!\r\n");while(1) { }
}

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

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

相關文章

rollup.js(入門篇)

前沿 Rollup 是一個用于 JavaScript 的模塊打包工具,它將小的代碼片段編譯成更大、更復雜的代碼,例如庫或應用程序。它使用 JavaScript 的 ES6 版本中包含的新標準化代碼模塊格式,而不是以前的 CommonJS 和 AMD 等特殊解決方案。ES 模塊允許…

如何在Python中處理時間和日期

在Python中處理時間和日期,我們通常使用內置的datetime模塊。這個模塊提供了類來操作日期和時間,包括date、time、datetime、timedelta以及tzinfo。以下是datetime模塊的一些基本用法: 1. 獲取當前日期和時間 python復制代碼 from datetime…

Linux編程for、while循環if判斷以及case語句用法

簡介 語法描述if條件語句if else條件判斷語句if else-if else多條件判斷語句for循環執行命令while循環執行命令until直到條件為真時停止循環case ... esac多選擇語句break跳出循環continue跳出當前循環 1. for 循環 for語句,定量循環,可以遍歷一個列表…

一文讀懂AI時代GPU的內存新寵-HBM

一文讀懂GPU最強輔助:HBM HBM,即高帶寬內存,是一項領先的3D堆疊DRAM技術,專為高性能計算和圖形處理單元(GPU)設計,滿足其對內存帶寬和容量的極致需求。該技術由AMD與海力士攜手研發,…

Apache安裝教程

目錄 一、Apache知識點 Apache服務簡介 Apache下載網址 Apache的主要特點 二、Apache服務的搭建 1. 關閉防火墻 2. 安裝依賴環境以及編譯工具 3. 將apache安裝包拖入xshell內 4. 解壓壓縮包 5. 進入httpd主包 6. 指定安裝路徑,啟用字符集支持等 7. 優化執…

重慶工商大學社會工作專業試題及答案,分享幾個實用搜題和學習工具 #媒體#學習方法#知識分享

搜題軟件一般都是通過識別題目內容搜索出問題的答案,當識別內容不正確或搜索不到答案時,又得重新到其他軟件進行重復的操作,很是麻煩。所以我們可以使用專業的識別工具,對題目內容進行識別,然后把提取出來的內容單獨保…

流量錄制學習

AREX Cloud | AREX (arextest.com) 流量錄制學習,比vivo的moonbox要好用

android 異屏同顯二.

android主屏: android副屏 | | mediaProjection ----SufaceTextrue ---Open…

【數據結構】平衡二叉樹左旋右旋與紅黑樹

平衡二叉樹左旋右旋與紅黑樹 平衡二叉樹 定義 平衡二叉樹是二叉搜索樹的一種特殊形式。二叉搜索樹(Binary Search Tree,BST)是一種具有以下性質的二叉樹: 對于樹中的每個節點,其左子樹中的所有節點都小于該節點的值…

【vector模擬實現】附加代碼講解

vector模擬實現 一、看源代碼簡單實現1. push_backcapacity(容量)sizereserve(擴容)operator[ ] (元素訪問) 2. pop_back3. itorator(迭代器)4.insert & erase (頭插…

哈夫曼樹的創建

要了解哈夫曼樹,可以先了解一下哈夫曼編碼,假設我們有幾個字母,他們的出現頻率是A: 1 B: 2 C: 3 D: 4 E: 5 F: 6 G: 7。那么如果想要壓縮數據的同時讓訪問更加快捷,就要讓頻率高的字母離根節點比較進,容易訪問&#xf…

立創·天空星開發板-GD32F407VE-GPIO

本文以 立創天空星開發板-GD32F407VET6-青春版 作為學習的板子,記錄學習筆記。 立創天空星開發板-GD32F407VE-GPIO 基礎概念三極管MOS管 GPIO輸出模式輸出線與GPIO輸入模式GPIO點燈 基礎概念 GPIO,全稱為“通用輸入/輸出”(General Purpose …

算法金 | 這次終于能把張量(Tensor)搞清楚了!

大俠幸會,在下全網同名[算法金] 0 基礎轉 AI 上岸,多個算法賽 Top [日更萬日,讓更多人享受智能樂趣] 1. 張量(Tensor)基礎概念 1.1 張量的定義與重要性 張量是深度學習中用于表示數據的核心結構,它可以視…

《帝國時代 III:決定版》秘籍 怎么在蘋果電腦上玩《帝國時代 III:決定版》

《帝國時代 III:決定版》是一款讓玩家沉浸于歷史長河體驗從大航海時代到工業革命時期的游戲。下面我們來看看《帝國時代 III:決定版》是什么類型的游戲,《帝國時代 III:決定版》Mac安裝教程的相關內容。 一、《帝國時代 III&…

【BOM02】本地存儲

一:什么是本地存儲 數據存儲在用戶瀏覽器中,用戶設置、讀取方便,同時頁面刷新時不會丟失數據。存儲在瀏覽器中數據約5M,分為sessionStorage和localStorage兩種存儲方式 二:localStorage存儲 作用 將數據永久存儲在…

opencv實戰小結-銀行卡號識別

實戰1-銀行卡號識別 項目來源:opencv入門 項目目的:識別傳入的銀行卡照片中的卡號 難點:銀行卡上會有一些干擾項,如何排除這些干擾項,并且打印正確的號碼是一個問題 最終效果如上圖 實現這樣的功能需要以下幾個步驟…

基于Amazon Linux使用pip安裝certbot并使用Apache配置證書的完整步驟

配置證書 1. 更新系統和安裝必要的軟件包 首先,確保系統和包管理器是最新的: sudo dnf update -y sudo dnf install -y python3 python3-pip python3-virtualenv httpd mod_ssl2. 創建并激活虛擬環境 為了避免依賴沖突,使用virtualenv創建…

算法導論實戰(三)(算法導論習題第二十四章)

🌈 個人主頁:十二月的貓-CSDN博客 🔥 系列專欄: 🏀算法啟示錄 💪🏻 十二月的寒冬阻擋不了春天的腳步,十二點的黑夜遮蔽不住黎明的曙光 目錄 前言 第二十四章 24.1-3 24.1-4 2…

筆記:DST與HPPC測試方法

一、DST測試方法: DST全稱為Dynamic Stress Test,是一種動態壓力測試方法,主要用于評估電池在實際使用條件下的綜合性能,模擬了車輛在行駛過程中可能會遇到的各種動態負載變化,如加速、減速、怠速等工況。 它的目的是評估電池在…

setattr前端接收方法深度解析

setattr前端接收方法深度解析 在前端開發中,setattr可能是一個較為陌生的概念,但它卻在某些場景下扮演著關鍵角色。setattr是一個Python內置函數,用于設置對象屬性的值。然而,在前端與后端交互的過程中,我們有時需要處…