【DSP28335 入門教程】深度解析中斷系統:三級架構與響應機制

大家好,歡迎來到我們的 DSP28335 深度解析系列。在之前的實戰中,我們通過?while(1)?循環和延時函數實現了各種控制,這種方式被稱為輪詢。但輪詢就像一個焦急的門衛,需要不停地去檢查每個門口是否有人,既浪費精力又效率低下。今天,我們將學習一種更高效、更優雅的機制——中斷 (Interrupt),為我們的系統裝上“門鈴”,讓它從被動等待變為主動響應。

掌握中斷系統,是從入門到精通的必經之路,是釋放 DSP 真正潛能的關鍵。

一、中斷是什么?—— 從“輪詢”到“事件驅動”

[圖1: 中斷示意圖]

中斷,顧名思義,就是打斷當前正在執行的任務。在 CPU 執行程序時,如果發生了某個需要立即處理的緊急或隨機事件(例如按鍵按下、定時器到時、數據接收完成),這個事件就會像一個“請求”,向 CPU 申請關注。CPU 在允許的情況下,會暫時掛起當前正在執行的程序,轉而去執行一段專門為處理該事件而寫的代碼——即中斷服務程序 (ISR, Interrupt Service Routine)。當事件處理完畢后,CPU 會自動返回到之前被打斷的地方,繼續執行原來的程序。

這一過程,就如同你在專心看書(主程序),突然電話鈴響(中斷請求),你于是放下書,拿起聽筒接電話(執行ISR),講完電話后,你再拿起書從剛才讀到的地方繼續看下去。

二、F28335 中斷的宏觀架構

TI 的 C2000 系列 DSP,尤其是 F28335,擁有一個非常強大且靈活的中斷系統。

[圖2: F28335 中斷源與內核關系圖]

  • 16 條核心中斷線:?F28335 的 C28x 內核有?16 個中斷入口。這包括 2 個不可屏蔽中斷(RESET?和?NMI?- Non-Maskable Interrupt,通常用于電源掉電等最高緊急事件),以及 14 個可屏蔽中斷(INT1 ~ INT14)。

  • 眾多的中斷源:?而 DSP 的外設遠不止 14 個,ADC、ePWM、SPI、SCI、CAN、定時器等幾十個模塊都可能產生中斷請求。

  • PIE 的誕生:?如何用 14 條中斷線,管理幾十個中斷源?答案就是復用PIE (Peripheral Interrupt Expansion) 模塊應運而生,它像一個巨大的中斷“集線器”或“管理器”,負責將眾多的外設中斷請求,分門別類地匯總到 CPU 的 12 條主中斷線(INT1 ~ INT12)上。

三、三級中斷機制:從申請到批準的層層關卡

F28335 的中斷響應過程像一個嚴格的“三級審批”流程。一個外設的中斷請求,必須依次通過外設級PIE 級和?CPU 級三道“門禁”,才能最終得到 CPU 的響應。

[圖3 & 圖4: 外部中斷信號通路圖]

第一級:外設級中斷使能

  • 關卡描述:?這是中斷請求的源頭。每個能夠產生中斷的外設模塊(如 ADC、ePWM),其內部都有自己的中斷使能位。

  • 放行條件:?必須將對應外設的中斷使能位置 1,它才被“允許”發出中斷請求。如果這里是關閉的,那它連“喊一聲”的機會都沒有。

第二級:PIE 級中斷使能

  • 關卡描述:?這是中斷請求的分組管理中心。PIE 模塊將 96 個中斷源分成了 12 個大組(PIE Group 1 ~ 12),每個大組包含 8 個中斷。

    [圖6: PIE 96路中斷分組邏輯圖]

  • 放行條件:?中斷請求到達 PIE 后,需要通過兩個“開關”:

    1. PIEIFRx.y (中斷標志位):?當中斷請求到達,對應的標志位會自動置 1,表示“有人敲門了”。

    2. PIEIERx.y (中斷使能位):?必須將這個使能位置 1,表示“允許這扇門打開”。這個?x?代表組號 (1-12),y?代表組內中斷號 (1-8)。

  • 核心工作:?只有當 PIEIFR 和 PIEIER 中對應的位都為 1 時,該中斷請求才能通過 PIE 這一級,并被提交給 CPU 對應的主中斷線(例如,第3組的所有中斷請求,最終都會匯集到 CPU 的 INT3 中斷線上)。

    [圖7: PIE 中斷向量表]

第三級:CPU 級中斷使能

  • 關卡描述:?這是中斷請求的“總開關”和“最后一道防線”,直接與 CPU 內核相連。

    [圖5: PIE 與 CPU 中斷邏輯細節圖]

  • 放行條件:?PIE 提交的中斷請求到達 CPU 后,同樣需要通過兩個“開關”:

    1. IFR (中斷標志寄存器):?當 INTx (x=1~14) 上有中斷請求時,IFR 對應的位會置 1。

    2. IER (中斷使能寄存器):?這是 14 個主中斷線的使能開關。必須用?IER |= M_INTx?的方式,打開對應中斷線的“閥門”。

    3. INTM (全局中斷使能位):?這是全局的總開關。只有當 INTM 為 0 時,CPU 才響應中斷。我們可以用匯編指令?EINT?(Enable INTerrupt) 來清零它,或用?DINT?(Disable INTerrupt) 來置位它。

總結:一個中斷要想最終被 CPU 響應,必須同時滿足:①外設中斷使能打開 ②PIE 組中斷使能打開 ③CPU 主中斷線使能打開 ④CPU 全局中斷使能打開。

四、中斷響應:找到正確的服務程序 (中斷向量表)

當中斷請求歷經千辛萬苦終于獲得批準后,CPU 需要知道應該去哪里執行對應的中斷服務程序(ISR)。存放這些 ISR 入口地址的表,就叫做中斷向量表 (Interrupt Vector Table)

  • 中斷向量:?每個 ISR 的入口地址就是一個中斷向量。它是一個 22 位的地址。

  • 中斷向量表:?F28335 中,這個向量表可以被映射到不同的物理存儲區域,這由三個關鍵的控制位來決定。

    1. ENPIE (在 PIECTRL 寄存器中):?PIE 模塊的總開關。當它為 1 時,PIE 功能開啟。復位后為 0。

    2. VMAP (在 ST1 狀態寄存器中):?控制向量是映射到內存低地址區還是高地址區(BOOT ROM)。復位后為 1。

    3. M0M1MAP (在 ST1 狀態寄存器中):?用于區分 M0 和 M1 RAM。復位后為 1。

  • 實際應用中的選擇:

    [圖8: PIE 使能時的向量映射表]
    [圖9: PIE 禁用時的向量映射表]

    通過查閱這兩張表格,我們可以得出在實際應用中最常用的配置:
    我們將?ENPIE?置 1,同時保持?VMAP=1?和?M0M1MAP=1。
    在這種配置下,中斷向量表被穩穩地映射到了 F28335 的?PIE RAM 區 (0x000D00 - 0x000DFF)。這樣做的好處是,我們可以非常方便地在程序中,將我們自己編寫的 ISR 函數的地址,注冊到這個 RAM 區域的向量表中,從而將中斷源和我們的服務程序動態地“鏈接”起來。

總結

DSP28335 的中斷系統初看復雜,但其設計邏輯清晰、層次分明:

  • 架構上,通過 PIE 模塊實現了對海量中斷源的分級管理

  • 響應上,通過“外設-PIE-CPU”的三級審批流程,確保了中斷響應的嚴謹性和可控性。

  • 尋址上,通過靈活的向量表映射機制,讓用戶可以方便地自定義中斷服務程序。

雖然理論略顯枯燥,但徹底理解這一套機制,是你編寫高效、穩定、強大的嵌入式程序的基石。在下一篇章中,我們將進入實戰,親手配置一個定時器中斷,讓你真正感受到中斷帶來的編程魅力。

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

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

相關文章

代碼隨想錄二刷之“字符串”~GO

1.344. 反轉字符串 - 力扣&#xff08;LeetCode&#xff09; func reverseString(s []byte) {left : 0right : len(s)-1for left < right{s[left],s[right] s[right],s[left]leftright--}return } 感悟&#xff1a;還是go語法熟練程度的問題&#xff0c;需要注意的是&am…

(!萬字血書!)文本預處理:NLP 版 “給數據洗澡” 指南

好吧&#xff0c;我承認我是個標題黨&#xff01;(不這樣你會點進來享受這篇 通俗易懂 的好文章嗎&#xff1f;) 正經標題&#xff1a;文本預處理全流程:從基礎到實踐 &#xff08;屏幕前的你&#xff0c;帥氣低調有內涵&#xff0c;美麗大方很優雅… 所以&#xff0c;求…

最新chrome瀏覽器elasticsearch-head無法安裝使用問題

chrome瀏覽器網址欄復制粘貼以下內容輸入回車 chrome://flags/#allow-legacy-mv2-extensions 找到Allow legacy extension manifest versions項右側選擇Enabled啟用&#xff0c;重啟瀏覽器即可。

CSS aspect-ratio 屬性

aspect-ratio 是 CSS 中用于控制元素寬高比的屬性&#xff0c;通過一行代碼即可實現響應式比例布局&#xff0c;無需復雜計算。它確保元素在不同屏幕尺寸下保持固定比例&#xff0c;提升響應式設計效率。一、基本語法與取值selector {aspect-ratio: <width> / <height…

FreeRTOS多核支持

個人博客&#xff1a;blogs.wurp.top 簡介 1. 多核支持概述 在傳統的單核系統中&#xff0c;FreeRTOS 通常運行在一個 CPU 核心上&#xff0c;負責任務調度、中斷處理和資源管理。然而&#xff0c;在多核系統中&#xff0c;多個核心可以并行執行不同的任務或線程&#xff0c…

CUDA中的基本概念

要學習cuda的同學相信已經對其有一定的了解了&#xff0c;至少直到它是干什么的了。這篇文章主要是對cuda編程中的主要概念進行總結&#xff0c;有了一個大致的輪廓后就好入手了。 異構架構 異構架構即使用CPU和GPU共同進行計算。GPU不能作為一個獨立的運行平臺&#xff08;程序…

【LINUX網絡】HTTP協議基本結構、搭建自己的HTTP簡單服務器

目錄 1. 初識HTTP 2. URL 2.1 基本結構 2.2 URL中的?與urldecode\urlencode 易混淆&#xff1a;URL和HTTP傳輸請求兩者是什么關系&#xff1f; HTTP的宏觀結構 3. DEMO CODE loop模塊&#xff0c;核心邏輯 HttpServer 初代版本&#xff08;DEMO 0.0&#xff09; DEMO 1.0 DEMO…

Spring Boot 靜態函數無法自動注入 Bean?深入解析與解決方案

在 Spring Boot 項目中&#xff0c;開發者常遇到一個典型問題&#xff1a;在靜態方法或靜態變量中嘗試使用 Autowired 注入 Bean 時&#xff0c;始終得到 null 值。本文將深入剖析這一問題的根源&#xff0c;并提供多種可靠解決方案。問題重現&#xff1a;為什么注入失敗&#…

存儲過程作為系統邏輯核心的架構思考 —— 以 SaaS 系統為例

在企業級系統尤其是 SaaS 架構中&#xff0c;技術選型一旦確定&#xff0c;就意味著底層數據庫類型基本不會輕易更換。既然如此&#xff0c;我們可以更大膽地將數據庫能力本身納入系統設計的核心&#xff0c;而不僅僅把它當成一個被動的存儲引擎。存儲過程&#xff08;Stored P…

Ubuntu20.04下Remmina的VNC密碼忘記后重置

你遇到的錯誤&#xff1a; ** error creating password: /home/ysc/.vnc/passwd storepasswd: No such file or directory說明&#xff1a;x11vnc -storepasswd 無法創建密碼文件&#xff0c;因為 .vnc 目錄不存在。 雖然你可能以為路徑是對的&#xff0c;但系統找不到 /home/y…

從“存得對”到“存得準”:MySQL 數據類型與約束全景指南

目錄 一、為什么需要數據類型與約束&#xff1f; 二、MySQL 數據類型全覽 1. 數值類型&#xff1a;精確 VS 近似 2. 日期時間類型&#xff1a;別讓“0000-00-00”出現 3. 字符串類型&#xff1a;CHAR、VARCHAR、TEXT、BLOB 4. JSON 類型&#xff1a;文檔與關系共舞 5. 空…

Effective C++ 條款42:了解 typename 的雙重含義

Effective C 條款42&#xff1a;了解typename的雙重含義 核心思想&#xff1a;在模板聲明中&#xff0c;typename和class可互換使用&#xff0c;但在模板內部&#xff0c;typename必須用于顯式指明嵌套從屬類型名稱&#xff08;nested dependent type name&#xff09;&#xf…

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會2025年11月21-24日中國進出口商品交易會展館D區(廣州)AUTO TECH China 2025同期&#xff1a;第二十三屆廣州車展即將盛大開幕展商推薦ENCOPIM, S.L.展位號&#xff1a;3916企業簡介&#xff1a;ENCOPIM, S.L.于…

30 HTB Soccer 機器 - 容易

主要知識點 第一階段&#xff1a;偵查 nmap nmap快速掃描&#xff1a; oxdfhacky$ nmap -p- --min-rate 10000 10.10.11.194 Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-04 13:32 EDT Nmap scan report for 10.10.11.194 Host is up (0.093s latency). Not shown:…

阿里云機器翻譯接口SDK-RAM權限配置

用戶授權翻譯權限在數字化時代&#xff0c;短信作為企業與用戶溝通的重要橋梁&#xff0c;其高效、可靠的送達直接影響業務轉化與用戶體驗。SDK&#xff08;軟件開發工具包&#xff09;的出現極大簡化了短信功能的集成過程&#xff0c;讓開發者能夠快速在應用中嵌入短信驗證、通…

ESXI 6.7服務器時間錯亂問題

1. 設置ESXI服務器&#xff1a;在此主機上手動配置日期和時間管理-服務-ntpd-鼠標右鍵-策略-手動啟動和停止&#xff0c;狀態已停止管理-系統-時間和日期-編輯設置-檢查是否選擇了【在此主機上手動配置日期和時間】ntp服務狀態已停止ntp服務器已停止2. 停止所有虛擬機自動更新時…

CV 醫學影像分類、分割、目標檢測,之【皮膚病分類】項目拆解

CV 醫學影像分類、分割、目標檢測&#xff0c;之【皮膚病分類】項目拆解第1-12行&#xff1a;導入庫第14-17行&#xff1a;讀取標簽文件第19-21行&#xff1a;獲取疾病名稱第23-26行&#xff1a;獲取圖片名列表第28-35行&#xff1a;篩選有標簽的圖片第38-43行&#xff1a;提取…

【JavaEE】多線程 -- 線程狀態

目錄六大狀態舉例說明六大狀態 New 新建狀態&#xff1a;線程還沒出創建&#xff0c;只有Thread 實例化的對象&#xff0c;調用start 方法之前的狀態。Runnable 運行狀態&#xff1a;被系統調度后&#xff0c;CPU 正在執行的&#xff0c;Ready 就緒態&#xff0c;系統調度&…

網絡流初步

網絡流初步 文章目錄網絡流初步概念介紹最大流費用流概念介紹 網絡流不同之處在于它的本質圖論&#xff0c;但是把圖論的某些概念換了一個說法而已&#xff0c;初步只要了解網絡流的各個概念就可以明白的很快。 下述概念是本人自己定義的&#xff0c;對于網絡流的題目做的還不…

[系統架構設計師]系統架構基礎知識(一)

[系統架構設計師]系統架構基礎知識&#xff08;一&#xff09; 一.計算機系統基礎知識 1.計算機系統概述 硬件軟件及網絡組成的系統 2.計算機硬件基礎知識 馮 諾依曼結構&#xff1a;運算器&#xff0c;控制器&#xff0c;存儲器&#xff0c;輸入設備&#xff0c;輸出設備 專用…