Interrupt_event梳理
1.預備資料
MM32/stm32中文參考手冊
Cortex-M3權威指南(深入了解中斷和異常)
MM32F103產品手冊(配置GPIO的復用功能可能用到)
2.提出問題
什么是中斷?
怎樣配置一個中斷?
3.思維導圖整體框架(CTRL+中鍵縮放查看)
4.什么是中斷?
中斷,Interrupt,就是CPU正在執行某項任務,被此項任務外的其他事務打斷,CPU將正在執行的任務暫停(保護現場)轉而執行其他高優先級的事務(處理中斷),等此項事務執行完成,CPU再來執行先前被打斷的任務(返回/恢復現場)。
對於用戶而言,我們不必關心CPU怎樣跳轉(保護/恢復現場),我們主要關注CPU響應我們的預置中斷請求即可。
因此,中斷的配置主要關注:怎樣進入中斷和中斷中做什么事情。
5.NVIC(嵌套中斷向量中斷控制器)
中斷和異常向量
中斷與異常是ARM內核的東西,需要深入了解可以看《Cortex-M3權威指南》
這里分析stm32中的中斷向量表的使用與查詢
表中的幾個重要參數:
位置:配置中斷是,告訴CPU中斷的位置
名稱:外設請求的中斷名稱,詳情可以看“說明”字段
優先級:當同時發生多個中斷請求時,CPU需要一種合理高效的調度模式,決定處理各個中斷請求的次序(搶占優先級,響應優先級)
以表中的EXTI0說明:
這里需要配置EXTI0上的中斷,即當EXTI0線上發生上升沿或者下降沿(可配置)時,我們需要CPU跳轉到相應的中斷服務函數中執行我們想執行的任務,可以這樣配置:
- 設置NVIC的中斷位置為6
- 設置邊沿觸發模式(上升沿/下降沿/雙邊沿)
- 適當的時候在EXTI0上產生觸發信號,激活中斷執行中斷服務函數
關於產生EXTI0觸發信號
查閱外部中斷通用I/O映射可以知道,通過配置GPIO[x]0連接到EXTI0線
6.EXTI(外部中斷/事件控制器)
框圖
- 配置1-3 + NVIC響應中斷使能 可以觸發硬件的外部中斷
- 配置2-3 + NVIC響應中斷使能 可以觸發軟件的外部中斷
- 配置1-4可以觸發硬件的外部事件(事件可用於sleep mode喚醒等)
- 配置2-4可以觸發軟件的外部事件
配置一個中斷(EXTI0外部中斷)
配置時鍾和GPIO(EXTI0輸入)
GPIO_InitTypeDef GPIO_InitStructure; //GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALL,ENABLE);
RCC_PCLK2Config(RCC_HCLK_Div8);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_ALL,ENABLE);
RCC_PCLK2Config(RCC_HCLK_Div8);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //配置EXTI0的觸發信號,具體查閱--外部中斷/事件線路映射
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //input mode
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //50M
GPIO_Init(GPIOA, &GPIO_InitStructure);
配置EXTI控制器
NVIC->ISER[0]=(1<<6);//使能CPU的中斷響應,其中位置為6,在中斷和異常向量表中可以查詢得到
EXTI->IMR=(0x1<<0); //配置EXTI的中斷使能,請看上邊的框圖分析
EXTI->RTSR=(0x1<<0); //line 0 rising 配置上升沿觸發
EXTI->FTSR=(0x1<<0); //line 0 falling 配置下降沿觸發,細節請看EXTI的寄存器描述
while(EXTI->IMR&0x100); //等待進入中斷
寫中斷服務函數
void EXTI0IRQHandler(void) //中斷服務函數,請到庫函數查看各個中斷對應的預定義中斷函數名
{
EXTI->PR=0x1; //清除掛起中斷
print("Hello EXTI0\n");
EXTI->IMR&=0xfffffc1f; //除能中斷
}
觸發
這樣通過在GPIO引腳輸入脈沖即可進入中斷函數。
7.總結中斷配置步驟
- 配置NVIC寄存器
NVIC->ISER[0]=(0x1<<6)
- 配置外設中斷寄存器,使能中斷
- 根據定義的中斷子函數名寫中斷函數,例如
void EXTI0IRQHandler(void
- 運行程序,使之產生中斷
- 查看進入中斷情況,是否觸發中斷
參考資料
[1]. MM32參考手冊
[2]. stm32中文參考手冊
[3]. Cortex-M3權威指南
[4]. MM32F103產品手冊