在CPU工作的 過程中,經常需要與外設進行交互,交互的方式包括'輪詢方式'和'中斷方式'。
輪詢方式:
CPU不斷地查詢設備的狀態。該方式實現比較簡單,但是CPU的利用率很低,不適合多任務的系統。
中斷方式:
CPU告知硬件開始一項工作之后,就去做別的事去了,當硬件完成了該項任務后,向CPU發送一個信號,告知CPU它已經完成了這項工作了。
中斷處理的流程:

1.中斷生命周期:
串口中斷實例:

中斷的周期:

上面可以看到中斷的流程包括:1.中斷源。 2.中斷控制器。3.CPU相應。
2.中斷源
在中斷的生命周期中,中斷源的作用是負責產生中斷信號。每個種開發板所支持的中斷源的個數不盡相同:

3.中斷過濾
下面是過濾的過程分析:

上面就是中斷過濾的簡略圖,當中斷信號被允許,送到CPU處理,也是有優先級別的。
4.中斷處理:
中斷包括非向量方式和向量方式。

非向量方式中斷處理流程(2440):

接下來看2440uboot里的中斷:
首先是中斷的統一入口:

Irq處的代碼:

可以看到,在上面的uboot代碼中irq_save_user_regs就是執行保護環境的操作。接著就是跳轉到發生中斷的地方進行中斷處理。處理完后就是恢復環境:irq_restore_user_regs.
向量方式中斷處理流程(6410和210):

6410和210采用的是向量中斷方式,步驟和2440不一樣,但是知識點都差不多。
總結:

關鍵字:中斷 處理流程 輪詢方式
引用地址:
4.中斷處理流程分析
推薦閱讀最新更新時間:2025-04-23 11:36
STM32 定時器中斷配置心得【自用】
1.IO配置 略 2.TIM配置 void TIM2_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period =359999; TIM_TimeBaseStructure.TIM_Prescaler = 99; TIM_TimeBas
[單片機]
LCD實驗學習筆記(八):中斷
s3c2440有60個中斷源(其中15個為子中斷源)。 31個32位的通用寄存器,6個程序狀態寄存器。有6種工作模式(系統/用戶模式,快中斷模式,管理模式,數據訪問中止模式,中斷模式,未定指令中止模式)。每種模式都有16個通用寄存器和1(或2)個程序狀態寄存器。 R15(pc)是程序計數器,R14(lr)是連接寄存器,在異常時自動保存pc備份,r13(sp)是棧指針寄存器。 CPSR是當狀程序狀態寄存器。其 為控制位, 為中斷禁止位, 為快中斷禁止位, 為CPU狀態位, 為工作模式位。, 程序狀態寄存器(PSR)的F位 設為1,禁用快速中斷(FRQ)。 程序狀態寄存器(PSR)的I位 設為1,禁用普通中斷(IRQ)。 SPSR程序
[單片機]
學習STM32日志——簡單外部中斷
STM32支持19個外部中斷和事件請求,其中線0~15映射對應IO口的輸入中斷。每個線同時最多只能映射一個IO口。 映射關系 而中斷服務函數只有7個。線5-9共用一個,10到15共用一個。 下面是配置步驟。 開始自己編寫一個程序,通過兩個按鍵的按下來觸發中斷,一個按鍵接地,端口設置為上拉狀態,觸發模式為下降沿觸發;另一個按鍵接VCC,端口設置為下拉狀態,觸發模式為上升沿觸發。然后在中斷服務函數中編寫觸發中斷后要執行的函數。一個為切換LED的亮滅狀態,另一個控制蜂鳴器的通斷。 在調試過程中,出現了按鍵按下但會偶爾失靈,既不觸發中斷的現象,經過半個小時的找原因,發現因為粗心,將接地按鍵的觸發模式設置為下降沿,而將接V
[單片機]
【STM32】5—UART串口(中斷模式)
0 實驗預期效果 完成串口數據的接收和發送 1 相關原理圖 2 軟件配置 STM32CubeMX配置USART1: 在NVIC中配置USART中斷優先級: 3 代碼編寫 3.1 函數認識 見博客【STM32】HAL庫學習 2—hal_uart_kokoのadventure的博客-CSDN博客 3.1.1 串口發送 /** * @brief Sends an amount of data in non blocking mode. * @note When UART parity is not enabled (PCE = 0), and Wo
[單片機]
STM32F072RB 實作筆記(五)- 計時器加上中斷EXTI_IRQHandler(一)
中斷技巧增加平行處理的能力 寫單晶片程式有意思的地方除了那種“掌控”的感覺外,接著就是有那種“處理復雜事件的能力”! 基本的程式是循序進行,時間就會被耽擱。若是想要把程式并行處理,那么,“中斷”插入的方法是個好幫手,這個時候就要能同時處理不同的事件。我常常比喻電腦程式就像廚房;火爐是CPU,餐盤容器是暫存器,食材就是資料;這個做菜的程序容易理解,只是這時間不容易拿捏,所以,單晶片的內部計時器就是一個好幫手。 這個M0 的計時器和中斷的寫法,比51族的mpu方便多了。 在M0 的C 語言里,使用中斷功能要寫下幾個功能: 設定中斷來源和 開啟中斷程式的向量指標 編寫中斷后要執行的服務程式 a.是否接受巢式中斷 b.主程式轉移進來
[單片機]
中斷&定時器(二)
1、中斷 上圖即為中斷過程示意圖,產生中斷的請求源被稱為中斷源,中斷源向CPU提出的處理請求被稱為中斷請求或中斷申請。CPU暫時中止當前的事件,轉去處理中斷請求所對應的事件稱為CPU的中斷響應過程,對事件的整個處理過程稱為中斷服務(中斷處理)。處理完畢后,返回到原先被中止的地方稱為中斷返回。 80C51中斷系統結構: 80C51的終端系統有5個中斷源(52有6個),兩個 優先級 ,可以實現二級中斷嵌套。 2、51單片機的定時/計數器 51 單片機 有兩個定時/計數器T0和T1,為16位可編程計數器,定時器的實質是加1計數器(16位),由低8位和高8位兩個寄存器組成,最大計數值為65535個計數脈沖。 該加
[單片機]
Tiny4412中斷介紹
Tiny4412中斷介紹 通過幾天裸板驅動開發,今天對ARM的中斷做一些簡單總結,前面我們已經了解了ARM的7種異常模式,中斷是異常模式的一種,在ARM中異常事件發生將會觸發中斷,但是,所有的中斷都不能直接訪問cpu,而是都統一由GIC(中斷管理器)來管理;下面是samsung提供的模式圖: 其中GIC管理的中斷有分為: (1)SGI:一個cpu中斷另一個cpu(cpu0 - cpu1) (2)PPI:一個中斷只能中斷一個cpu (3)SPI:一個中斷可以中斷多個cpu 處理一個中斷大致需要三步: (1)cpu permit interrupt (cpu允許中斷) (2)GIC ena
[單片機]
tiny4412學習(四)之移植linux-設備樹(1)設備樹基礎知識及中斷
硬件平臺:tiny4412 系統:linux-4.4 文件系統:busybox-1.25 編譯器: arm-none-linux-gnueabi-gcc(gcc version 4.8.3 20140320) uboot:友善自帶uboot. 一、DTS引入 1.什么是DTS?為什么要引入DTS? DTS即Device Tree Source設備樹源碼,DeviceTree是一種描述硬件的數據結構,它起源于OpenFirmware (OF)。 在Linux2.6中,ARM架構的板極硬件細節過多地被硬編碼在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform設備、reso
[單片機]