硬件開發2-ARM裸機開發3-IMX6ULL - 引入中斷

一、鋪墊引入中斷 → 按鍵

?1、概要:

????????????實現按鍵控制發光二極管和蜂鳴器

?????????????輸入類型的外設:按鍵(key)

2、參考手冊內容完成配置過程

(1)key 按鍵原理圖

(2)core 內核中命名 -- UART1 CTS

(3)復用功能設置

(4)電氣特性配置

? ? ? ? 一般順序:12 - -> 13 - -> 14-15

? ? ? ? 阻值不明確時通常選擇10K,如若沒有選擇阻值相近于10k的(所以選擇22k的[11])

1)上拉電阻

2)速率

3)綜合

(5)引腳方向配置

? ? GPIO1->GDIR &= ~(1 << 18);? ? ? ? //僅需要將GPIO的第18號引腳 置1

3、代碼實現

4、實驗現象

? ? ? ? 能夠實現按下按鍵是,蜂鳴器響應,led亮。但是會出現按下按有時無法立刻響應,是由于現有模式是輪詢模式,cpu無法在按鍵按下時就立刻進行響應,也許在你按下按鍵時刻,cpu正在別的地方檢測,所以會出現延時性。

? ? ? ? 由此引出,引入中斷。當按下按鍵時刻,能夠立刻響應。中斷:cpu在輪詢中有更為緊要的事情打斷,保護現場,去執行中斷任務,當執行完畢后,回到現場,恢復形成繼續進行剛剛被打斷前的任務。

二、中斷的引入

1、概念

????????中斷:CPU能打斷當前正在進行的工作,去處理更為緊急的任務,并且在處理完中斷任務后,能回到原先的地方繼續工作

2、流程

????????(1)中斷源發出中斷請求。

????????(2)CPU檢查是否響應中斷以及該終端是否被屏蔽。

????????(3)檢查當前產生的中斷的中斷優先級。

????????(4)保護現場

????????(5)執行中斷服務函數

????????(6)恢復現場

3、流程圖

? ? ? ? 由下圖可知:想要實現中斷還需要GIC控制器作為中間橋梁進行傳遞(秘書處)

?(1)中斷基本流程

? (2)?三類分發器 SGI、PPI、SPI

4、中斷控制器GIC

(1)概念

????????ARM處理器中管理中斷的硬件模塊,負責接收外設中斷請求(IRQ),根據優先級、目標核和安全屬性分發到CPU核心;

(2)類型

????????SGI(Software Generated Interrupt):核間通信中斷(ID0-15),通過寫寄存器,觸發由軟件觸發引起的中斷,通過向寄存器GICD_SGIR?寫入數據來觸發,系統會使用?SGI?中斷來完成多核之間的通信

????????PPI(Private Peripheral Interrupt):核私有中斷(ID16-31),如定時器中斷,我們說了?GIC?是支持多核的,每個核肯定有自己獨有的中斷。這些獨有的中斷肯定是要指定的核心處理,因此這些中斷就叫做私有中斷

????????SPI(Shared Peripheral Interrupt):共享外設中斷(ID32-1019),如GPIO、UART中斷,(注意!不是?SPI?總線那個中斷),這類中斷泛指所有的

(3)功能

?????中斷觸發、優先級仲裁、CPU響應、中斷完成

5、協處理器:cp0 - cp15

????????內核中的用到的ARM Cortex-A7內核GIC(通用中斷控制器)的關鍵寄存器

  1. C_IAR

    • 全稱:Interrupt Acknowledge Register(中斷應答寄存器)
    • 功能:讀取時返回當前最高優先級的中斷ID,表示處理器已接受該中斷
    • 訪問權限:只讀(__IM
    • 偏移地址:0x200C
  2. C_EOIR

    • 全稱:End Of Interrupt Register(中斷結束寄存器)
    • 功能:寫入中斷ID以通知GIC中斷處理完成
    • 訪問權限:只寫(__OM
    • 偏移地址:0x2010
  3. 無法直接知道基地址引入協處理器
  4. GIC的地址保存在協處理器的cp15中

(1)協處理器概念

(2)核心指令

  • cond:省略表示無條件執行。
  • p15:指定協處理器 CP15(系統控制協處理器)。
  • opc1:操作碼1,此處為 0(CP15 規定 opc1 必須為 0,否則結果不可預測)。
  • Rt:目標寄存器,示例中為 r0(ARM 核心寄存器)。
  • CRn:協處理器主寄存器編號,示例中為 c0
  • CRm:附加寄存器或操作數,示例中為 c0(若無需附加信息,通常設為 c0)。
  • opc2:次要操作碼,示例中為 0(用于區分同一編號寄存器的不同功能)

示例:

eg:MRC p15, 0, r0, c0, c0, 0

// 指令從 CP15 的?c0?寄存器(主標識符寄存器)讀取數據到 ARM 的?r0?寄存器。c0?是只讀寄存器? ? ? ? ?

(3)異常向量表基地址的配置實現過程

6、詳細藍圖

7、代碼實現

interrupt.c interrupt.h

start.S

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

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

相關文章

Ansible的 Playbook 模式詳解

目錄一、Playbook模式1.1 Playbook 的優勢1.2 Playbook 的組成1.3 安裝 httpd 服務案例1.4 Playbook 命令及常用參數1.5 Playbook 的語法 —— 權限相關1. remote_user2. become3. become_method1.6 Playbook 的通知與觸發機制1. notify2. handlers3. 使用示例4. 使用場景1.6 P…

猿輔導Java后臺開發面試題及參考答案

int 與 Integer 的區別是什么&#xff1f;若創建數量龐大的數字時使用 Integer&#xff0c;會對重復數字創建新對象嗎&#xff1f;int 是 Java 中的基本數據類型&#xff0c;直接存儲數值&#xff0c;占用 4 個字節&#xff0c;默認值為 0&#xff0c;不需要通過 new 關鍵字創建…

代碼隨想錄學習摘抄day9(回溯1-11)

一個樸實無華的目錄定義&#xff1a;回溯法也可以叫做回溯搜索法&#xff0c;它是一種搜索的方式。應用場景&#xff1a;回溯法解決的問題都可以抽象為樹形結構代碼模板題型第77題. 組合思路&#xff1a;每次從集合中選取元素&#xff0c;可選擇的范圍隨著選擇的進行而收縮&…

Altium Designer(AD24)打開工程文件的幾種方法

??《專欄目錄》 目錄 1,概述 2,源文件 2,菜單欄 4,工具欄 5,注意事項 1,概述 本文介紹幾種打開工程文件的方法。 2,源文件 找到工程的源文件存儲路徑,找到.PrjPcb的源工程文件,雙擊打開。 2,菜單欄 第1步:執行File→Open, 第2步:找到工程文件的存儲路徑,并選中…

Linux嵌入式自學筆記(基于野火EBF6ULL):2.點燈與ubuntu安裝

一、點燈登錄root&#xff1a;賬號&#xff1a;root ; 密碼&#xff1a;root點燈命令&#xff1a;echo 0 > /sys/class/leds/red/brightness #關閉red燈 echo 0 > /sys/class/leds/blue/brightness #關閉blue燈 echo 0 > /sys/class/leds/green/brightness …

【Java實戰?】Java實戰:MyBatis-Plus 開啟MySQL數據庫高效操作之旅

目錄 一、MyBatis-Plus 環境集成 1.1 項目依賴引入 1.2 數據庫配置 1.3 代碼生成器使用 二、核心 CRUD 操作實現 2.1 基礎查詢 2.2 數據新增與修改 2.3 復雜查詢場景 三、性能優化與高級特性 3.1 緩存配置 3.2 樂觀鎖實現 3.3 字段自動填充 四、實戰案例:用戶管理模塊開發 4.1…

開學季干貨——知識梳理與經驗分享

技術文章大綱&#xff1a;開學季干貨——知識梳理與經驗分享目標受眾分析明確文章面向的學生群體&#xff08;如大學生、高中生&#xff09; 分析不同群體的核心需求&#xff08;課程準備、時間管理、工具使用&#xff09; 結合技術場景&#xff08;如數字筆記、在線協作&#…

Linux《線程(上)》

通過之前的學習我們已經了解了操作系統當中的基本的概念包括進程、基礎IO、磁盤文件存儲等&#xff0c;但是到目前為止我們還未了解到線程相關的概念&#xff0c;這就使得當前我們對操作系統的認知還不是完整的&#xff0c;現在我們是還是無法理解一個進程當中是如何同時的執行…

為什么知識復用時缺乏場景化指導影響實用性

知識復用時因缺乏場景化指導而嚴重影響實用性&#xff0c;其根本原因在于知識的價值本質上根植于其應用情境。脫離了場景的“純知識”往往是抽象、片面且難以行動的。這導致了認知鴻溝的產生、隱性知識的流失、決策風險的增加、以及學習遷移效率的低下。當使用者面對一份缺乏“…

擁抱直覺與創造力:走進VibeCoding的新世界

引言 在傳統觀念里&#xff0c;編程是一項高度理性、邏輯嚴密的活動&#xff0c;開發者需要像建筑師一樣&#xff0c;用代碼一行行地精確構建數字世界。然而&#xff0c;隨著人工智能技術的飛速發展&#xff0c;一種全新的編程理念和體驗正在興起——它就是 VibeCoding&#xf…

HTTP的Web服務測試在Python中的實現

在Web開發領域&#xff0c;對HTTP Web服務進行測試是確保服務穩定性和可靠性的關鍵步驟。Python作為一種功能強大的編程語言&#xff0c;提供了多種工具和庫來簡化這一過程。本文將介紹如何在Python中實現HTTP的Web服務測試。首先&#xff0c;Python的requests庫是測試HTTP Web…

Android Studio 構建項目時 Gradle 下載失敗的解決方案

一、問題原因分析根據錯誤日志&#xff1a;下載地址 https://services.gradle.org/distributions/gradle-8.1-bin.zip 連接超時&#xff08;10秒&#xff09;。可能原因&#xff1a;網絡環境限制&#xff08;如公司防火墻、地區網絡屏蔽&#xff09;。代理配置未生效或配置錯誤…

mysql 與 MongoDB 的分片

MySQL 和 MongoDB 作為不同類型數據庫的代表(關系型 vs 文檔型),其分片機制在設計理念、實現方式和適用場景上存在顯著差異。兩者的分片核心目標一致——通過水平擴展(Scale Out)解決單節點存儲容量和性能瓶頸,但因數據模型、事務支持和分布式設計理念的不同,形成了截然…

Coze源碼分析-資源庫-創建知識庫-前端源碼-核心邏輯與接口

創建知識庫邏輯 1. 表單驗證系統 文件位置&#xff1a;frontend/packages/data/knowledge/knowledge-modal-base/src/create-knowledge-modal-v2/features/add-type-content/coze-knowledge/index.tsx 知識庫創建表單的驗證規則&#xff1a; // 知識庫名稱驗證規則 const nameV…

歐拉函數 | 定義 / 性質 / 應用

注&#xff1a;本文為 “歐拉函數” 相關合輯。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 歐拉函數最全總結 jiet07 已于 2024-10-22 10:00:54 修改 一、歐拉函數的引入 首先引入互質關系&#xff1a; 如果兩個正整數&#xff0c;除了 111 以…

ubuntu git push每次都要輸入密碼怎么解決只輸入一次密碼

在 Ubuntu 下使用 Git 時&#xff0c;如果每次 push 都需要重復輸入密碼&#xff0c;可以通過配置 Git 憑證存儲來解決。以下是幾種常用方法&#xff1a; &#x1f511; 方法一&#xff1a;使用 Git 憑證緩存&#xff08;推薦&#xff09; 設置憑證緩存&#xff08;默認 15 分鐘…

【機械故障】使用fir濾波器實現數據擬合

使用fir濾波器實現數據擬合 提示&#xff1a;學習筆記 使用fir濾波器實現數據擬合使用fir濾波器實現數據擬合一、問題建模二、 構建矩陣方程&#xff08;關鍵步驟&#xff09;三、最小二乘解四、重要注意事項4.1 濾波器長度 M4.2 數據的預處理4.3 延遲問題4.4 性能評估一、問題…

STC8H系列-高級PWM-兩相步進電機-細分驅動

兩相步進電機, STC8H系列 用高級PWM實現SPWM細分驅動 /************* 功能說明 ************** 用B組高級PWM細分驅動2相4線小型步進電機, 支持1、2、4、8、16、32、64細分, 比如1.8度的電機4細分到0.45度. 本程序用于演示SPWM多細分直接驅動2相4線小型步進電機…

內網環境下ubuntu 20.04搭建深度學習環境總結

2025年9月更新&#xff0c;隨著人工智能的發展&#xff0c;現在深度學習環境配置越來越簡單了&#xff0c;常用的pytorch、paddle&#xff08;3.x&#xff09;等深度學習庫安裝的時候自帶了cuda和cudnn的python包&#xff0c;不需要在操作系統層面自己安裝&#xff0c;配置環境…

深入 Linux 文件系統:從數據存儲到萬物皆文件

深入 Linux 文件系統&#xff1a;從數據存儲到萬物皆文件 Linux 文件系統是一個精妙而復雜的工程&#xff0c;它像一座圖書館&#xff0c;不僅存放著書籍&#xff08;數據&#xff09;&#xff0c;還有一套高效的卡片索引系統&#xff08;元數據&#xff09;來管理它們。本文將…