ARM微控制器與嵌入式系統(tǒng) 課件 19 外部中斷_第1頁
ARM微控制器與嵌入式系統(tǒng) 課件 19 外部中斷_第2頁
ARM微控制器與嵌入式系統(tǒng) 課件 19 外部中斷_第3頁
ARM微控制器與嵌入式系統(tǒng) 課件 19 外部中斷_第4頁
ARM微控制器與嵌入式系統(tǒng) 課件 19 外部中斷_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ARM微控制器與嵌入式系統(tǒng)

EXTI—外部中斷/事件控制器主講人:景妮琴北京電子科技職業(yè)學院內容外部中斷EXTI—外部中斷/事件控制器EXTI功能框圖中斷/事件線外部中斷配置中斷服務程序外部中斷按鍵實驗編程要點STM32微控制器外部中斷外部中斷是單片機實時地處理外部事件的一種內部機制。當某種外部事件發(fā)生時,單片機的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉而去進行中斷事件的處理;中斷處理完畢后.又返回被中斷的程序處,繼續(xù)執(zhí)行下去。在沒有干預的情況下,單片機的程序在封閉狀態(tài)下自主運行,如果在某一時刻需要響應一個外部事件(比如有按鍵按下),這時就會用到外部中斷。具體來講,外部中斷就是在單片機的一個引腳上,由于外部因素導致了一個電平的變化(比如由高變低),而通過捕獲這個變化,單片機內部自主運行的程序就會被暫時打斷,轉而去執(zhí)行相應的中斷處理程序,執(zhí)行完后又回到原來中斷的地方繼續(xù)執(zhí)行原來的程序。這個引腳上的電平變化,就申請了一個外部中斷事件,而這個能申請外部中斷的引腳就是外部中斷的觸發(fā)引腳。EXTI—外部中斷/事件控制器外部中斷/事件控制器包含多達23個用于產(chǎn)生事件/中斷請求的邊沿檢測器。每根輸入線都可單獨進行配置,以選擇類型(中斷或事件)和相應的觸發(fā)事件(上升沿觸發(fā)、下降沿觸發(fā)或邊沿觸發(fā))。每根輸入線還可單獨屏蔽。掛起寄存器用于保持中斷請求的狀態(tài)線。EXTI功能框圖EXTI功能框圖中斷/事件線STM32F4的每個IO都可以作為外部中斷輸入。

STM32F4的中斷控制器支持23個外部中斷/事件請求:EXTI線0~15:對應外部IO口的輸入中斷。EXTI線16:連接到PVD輸出。EXTI線17:連接到RTC鬧鐘事件。EXTI線18:連接到USBOTGFS喚醒事件。EXTI線19:連接到以太網(wǎng)喚醒事件。EXTI線20:連接到USBOTGHS(在FS中配置)喚醒事件。EXTI線21:連接到RTC入侵和時間戳事件。EXTI線22:連接到RTC喚醒事件。中斷/事件線每個外部中斷線可以獨立的配置觸發(fā)方式(上升沿,下降沿或者雙邊沿觸發(fā)),觸發(fā)/屏蔽,專用的狀態(tài)位。從上面可以看出,STM32F4供IO使用的中斷線只有16個,但是STM32F4xx系列的IO口多達上百個,那么中斷線怎么跟io口對應呢?中斷/事件線GPIO與中斷線關聯(lián)1、GPIOx與EXTIx對應2、每一個GPIO都可以作為外部中斷引腳中斷/事件線16個中斷線并不是分配的16個中斷服務函數(shù):在STM32F407xx微控制器外部中斷向量共7個。EXTI0_IRQnEXTI1_IRQnEXTI2_IRQnEXTI3_IRQnEXTI4_IRQnEXTI9_5_IRQnEXTI15_10_IRQn外部中斷線0、1、2、3、4分別對應外部中斷向量EXTI0_IRQn至EXTI4_IRQn外部中斷線9-5共用中斷向量EXTI9_5_IRQn外部中斷線15-10共用中斷向量EXTI15_10_IRQn外部中斷配置步驟1、開啟GPIO時鐘、系統(tǒng)配置時鐘2、配置端口3、GPIO與中斷線關聯(lián)4、中斷線配置5、中斷向量優(yōu)先級配置6、中斷服務函數(shù)外部中斷配置步驟1、開啟GPIO時鐘、系統(tǒng)配置時鐘開啟GPIO時鐘、系統(tǒng)配置時鐘RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //開啟GPIO時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//開啟SYSCFG時鐘

注:STM32F4xx微控制器使用外部中斷時都需要開啟SYSCFG時鐘外部中斷配置步驟2、配置端口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;//輸入模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空輸入GPIO_Init(GPIOI,&GPIO_InitStructure); //初始化配置STM32F4xx微控制器中每一個GPIO都可以作為外部中斷引腳。GPIO工作模式可以作為浮空輸入模式,但是如果使用按鍵,按下時為低電平,就應該配置成UP,這樣保證在沒有按下按鍵時是高電平,按下時是低電平。外部中斷配置步驟3、GPIO與中斷線關聯(lián)//GPIO中斷線關聯(lián)SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource4);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource5);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource6);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource7);注:在STM32F1xx標準外設庫中使用GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);函數(shù)實現(xiàn)。外部中斷配置步驟4、中斷線配置EXTI結構體:typedefstruct{uint32_tEXTI_Line;//中斷線

EXTIMode_TypeDefEXTI_Mode;//中斷模式

EXTITrigger_TypeDefEXTI_Trigger;//觸發(fā)方式

FunctionalStateEXTI_LineCmd;//中斷線使能或失能}EXTI_InitTypeDef;外部中斷配置步驟4、中斷線配置(1)EXTI_Line的取值范圍EXTI_Line0EXTI_Line1EXTI_Line2...EXTI_Line15外部中斷配置步驟4、中斷線配置(2)EXTI_Mode的取值范圍EXTI_Mode_Interrupt 中斷請求例如:EXTI線x中斷EXTI_Mode_Event 事件請求例如:連接到EXTI線的可編程電壓檢測(PVD)中斷連接到EXTI線的RTC喚醒中斷連接到EXTI線的USBOn-The-GoFS喚醒中斷外部中斷配置步驟4、中斷線配置(3)EXTI_Trigger取值范圍:EXTI_Trigger_Rising 上升沿觸發(fā)EXTI_Trigger_Falling 下降沿觸發(fā)EXTI_Trigger_Rising_Falling 上升沿下降沿觸發(fā)外部中斷配置步驟4、中斷線配置(4)EXTI_LineCmd取值范圍ENABLE 使能DISABLE 失能外部中斷配置步驟5、中斷向量優(yōu)先級配置typedefstruct{uint8_tNVIC_IRQChannel;//中斷向量

uint8_tNVIC_IRQChannelPreemptionPriority;//搶占優(yōu)先級

uint8_tNVIC_IRQChannelSubPriority;//響應優(yōu)先級

FunctionalStateNVIC_IRQChannelCmd;//中斷向量使能或失能}NVIC_InitTypeDef;外部中斷配置步驟5、中斷向量優(yōu)先級配置(1)NVIC_IRQChannel取值范圍:在STM32F407xx微控制器中共91個中斷向量。例如:EXTI線0中斷DMA1流0全局中斷ADC1、ADC2和ADC3全局中斷CAN1TX中斷TIM1捕獲比較中斷USART1全局中斷。。。外部中斷配置步驟5、中斷向量優(yōu)先級配置(1)NVIC_IRQChannel取值范圍:在STM32F407xx微控制器外部中斷向量共7個。EXTI0_IRQnEXTI1_IRQnEXTI2_IRQnEXTI3_IRQnEXTI4_IRQnEXTI9_5_IRQnEXTI15_10_IRQn外部中斷線0、1、2、3、4分別對應外部中斷向量EXTI0_IRQn至EXTI4_IRQn。外部中斷線9-5共用中斷向量EXTI9_5_IRQn外部中斷線15-10共用中斷向量EXTI15_10_IRQn5、中斷向量優(yōu)先級配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范圍STM32微控制器中斷優(yōu)先級由搶占優(yōu)先級與響應優(yōu)先級決定,搶占優(yōu)先級和響應優(yōu)先級取值范圍由中斷分組決定。NVIC_PriorityGroupNVIC_IRQChannel搶占優(yōu)先級NVIC_IRQChannel響應先級描述NVIC_PriorityGroup_000-15搶占優(yōu)先級0位響應先級4位NVIC_PriorityGroup_10-10-7搶占優(yōu)先級1位響應先級3位NVIC_PriorityGroup_20-30-3搶占優(yōu)先級2位響應先級2位NVIC_PriorityGroup_30-70-1搶占優(yōu)先級3位響應先級1位NVIC_PriorityGroup_40-150搶占優(yōu)先級4位響應先級0位外部中斷配置步驟5、中斷向量優(yōu)先級配置NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范圍中斷向量搶占優(yōu)先級響應優(yōu)先級A01搶占優(yōu)先級相同,響應優(yōu)先級數(shù)值小的優(yōu)先級高B02A12響應優(yōu)先級相同,搶占優(yōu)先級數(shù)值小的優(yōu)先級高B02A10搶占優(yōu)先級比相應優(yōu)先級高B02A11搶占優(yōu)先級和響應優(yōu)先級均相同,則中斷向量編號小的先執(zhí)行B11外部中斷配置步驟搶占式優(yōu)先級>響應優(yōu)先級>中斷表中的排位順序5、中斷向量優(yōu)先級配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范圍1)優(yōu)先級分組配置NVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);NVIC_PriorityGroup_0NVIC_PriorityGroup_1NVIC_PriorityGroup_2NVIC_PriorityGroup_3NVIC_PriorityGroup_4//設置中斷組為0示例4NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

外部中斷配置步驟5、中斷向量優(yōu)先級配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范圍2)搶占優(yōu)先級和響應優(yōu)先級配置NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//設置中斷組為0示例4NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優(yōu)先級,優(yōu)先級0組的搶占優(yōu)先級為0,主要靠子優(yōu)先級NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//響應優(yōu)先級

外部中斷配置步驟5、中斷向量優(yōu)先級配置(3)NVIC_IRQChannelCmd取值范圍ENABLE

使能DISABLE

失能

外部中斷配置步驟6、外部中服務函數(shù)

EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler外部中斷向量0、1、2、3、4分別指向EXTI0_IRQHandler至EXTI4_IRQHandler函數(shù)。外部中斷向量9_5指向EXTI9_5_IRQHandler函數(shù)。外部中斷向量15_10指向EXTI15_10_IRQHandler函數(shù)。外部中斷配置步驟6、外部中服務函數(shù)例如:voidEXTI4_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line4)) //判斷相應中斷線是否觸發(fā)中斷{if(GPIO_ReadInputDataBit(GPIOI,GPIO_Pin_4)==0) //判斷相應GPIO電平{EXTI_ClearITPendingBit(EXTI_Line4); //清除相應中斷線中斷標志位}}}外部中斷配置步驟①voidSYSCFG_EXTILineConfig(uint8_tEXTI_PortSourceGPIOx,uint8_tEXTI_PinSourcex);//設置IO口與中斷線的映射關系exp:SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource2);②voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct);//初始化中斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論