




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
中斷本章主要內(nèi)容9.1中斷系統(tǒng)概述9.2中斷配置步驟9.3外部中斷9.4STM32外部中斷的應(yīng)用實(shí)例
9.1中斷系統(tǒng)概述9.1.1中斷概念CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(中斷服務(wù)子程序或中斷處理程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。引發(fā)中斷的稱為中斷源。比如:看電視時(shí)突然門鈴響,那么門鈴響就相當(dāng)于中斷源。有些中斷還能夠被其他高優(yōu)先級(jí)的中斷所中斷,那么這種情況又叫做中斷的嵌套。
9.1.2中斷源及優(yōu)先級(jí)中斷源:STM32F10x芯片有84個(gè)中斷通道,包括16個(gè)內(nèi)核中斷和68個(gè)可屏蔽中斷,這些中斷通道已按照不同優(yōu)先級(jí)順序固定分配給相應(yīng)的外部設(shè)備。NVIC介紹 NVIC英文全稱是NestedVectoredInterruptController,中文意思就是嵌套向量中斷控制器,它屬于M3內(nèi)核的一個(gè)外設(shè),控制著芯片的中斷相關(guān)功能。由于ARM給NVIC預(yù)留了非常多的功能,但對(duì)于使用M3內(nèi)核設(shè)計(jì)芯片的公司可能就不需要這么多功能,于是就需要在NVIC上裁剪。ST公司的STM32F103芯片內(nèi)部中斷數(shù)量就是NVIC裁剪后的結(jié)果。
中斷控制相關(guān)寄存器在固件庫core_cm3.h文件NVIC結(jié)構(gòu)體內(nèi)??纱蜷_任意庫函數(shù)工程即可查看到。中斷優(yōu)先級(jí): STM32F103芯片支持60個(gè)可屏蔽中斷通道,每個(gè)中斷通道都具備自己的中斷優(yōu)先級(jí)控制字節(jié)(8位,但是STM32F103中只使用4位,高4位有效),用于表達(dá)優(yōu)先級(jí)的高4位又被為組成搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí),通常也把響應(yīng)優(yōu)先級(jí)稱為“亞優(yōu)先級(jí)”或“副優(yōu)先級(jí)”,每個(gè)中斷源都需要被指定這兩種優(yōu)先級(jí)。
高搶占式優(yōu)先級(jí)的中斷事件會(huì)打斷當(dāng)前的主程序或者中斷程序運(yùn)行,俗稱中斷嵌套。在搶占式優(yōu)先級(jí)相同的情況下,高響應(yīng)優(yōu)先級(jí)的中斷優(yōu)先被響應(yīng)。
當(dāng)兩個(gè)中斷源的搶占式優(yōu)先級(jí)相同時(shí),這兩個(gè)中斷將沒有嵌套關(guān)系,當(dāng)一個(gè)中斷到來后,如果正在處理另一個(gè)中斷,這個(gè)后到來的中斷就要等到前一個(gè)中斷處理完之后才能被處理。如果這兩個(gè)中斷同時(shí)到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級(jí)高低來決定先處理哪一個(gè);如果他們的搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都相等,則根據(jù)他們?cè)谥袛啾碇械呐盼豁樞驔Q定先處理那一個(gè)。 STM32F103中指定中斷優(yōu)先級(jí)的寄存器位有4位,這4位的分組方式如下:
設(shè)置優(yōu)先級(jí)分組可調(diào)用庫函數(shù)NVIC_PriorityGroupConfig(),在misc.c可以查看。9.2中斷配置步驟
要使用中斷我們就需要先配置它,通常都需經(jīng)過這幾步:(1)使能外設(shè)某個(gè)中斷(2)設(shè)置中斷優(yōu)先級(jí)分組,初始化NVIC_InitTypeDef結(jié)構(gòu)體typedefstruct{uint8_tNVIC_IRQChannel;//中斷源
uint8_tNVIC_IRQChannelPreemptionPriority;//搶占優(yōu)先級(jí)
uint8_tNVIC_IRQChannelSubPriority;//響應(yīng)優(yōu)先級(jí)
FunctionalStateNVIC_IRQChannelCmd;//中斷使能或禁用}NVIC_InitTypeDef;(3)編寫中斷服務(wù)函數(shù)9.3外部中斷 1.外部中斷介紹 2.外部中斷配置步驟 3.硬件電路 4.編寫外部中斷控制程序
9.3.1外部中斷介紹EXTI簡介 STM32F10x外部中斷/事件控制器(EXTI)包含多達(dá)20個(gè)用于產(chǎn)生事件/中斷請(qǐng)求的邊沿檢測(cè)器。EXTI的每根輸入線都可單獨(dú)進(jìn)行配置,以選擇類型(中斷或事件)和相應(yīng)的觸發(fā)事件(上升沿觸發(fā)、下降沿觸發(fā)或邊沿觸發(fā)),還可獨(dú)立地被屏蔽。
EXTI結(jié)構(gòu)框圖
9.3.2外部中斷/事件線映射
STM32F10x的EXTI具有20個(gè)中斷/事件線,如下:9.3.3外部中斷配置步驟
要使用外部中斷我們就需要先配置它,通常都需經(jīng)過這幾步:(EXTI相關(guān)庫函數(shù)在stm32f10x_exti.c和stm32f10x_exti.h文件中)(1)使能IO口時(shí)鐘,配置IO口模式為輸入(2)開啟AFIO時(shí)鐘,設(shè)置IO口與中斷線的映射關(guān)系RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);voidGPIO_EXTILineConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);(3)配置中斷分組(NVIC),使能中斷(4)初始化EXTI,選擇觸發(fā)方式voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct);typedefstruct{uint32_tEXTI_Line;//中斷/事件線
EXTIMode_TypeDefEXTI_Mode;//EXTI模式
EXTITrigger_TypeDefEXTI_Trigger;//EXTI觸發(fā)方式
FunctionalStateEXTI_LineCmd;//中斷線使能或失能}EXTI_InitTypeDef;(5)編寫EXTI中斷服務(wù)函數(shù)EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler9.4.1硬件電路
9.4外部中斷應(yīng)用實(shí)例9.4.2編寫外部中斷控制程序
要實(shí)現(xiàn)外部中斷方式控制LED,程序框架如下:(1)初始化對(duì)應(yīng)端口的EXTI(2)編寫EXTI中斷函數(shù)(3)編寫主函數(shù)(1)初始化對(duì)應(yīng)端口的EXTIEXTI初始化函數(shù):要使用外部中斷,必須先對(duì)它進(jìn)行配置。EXTI初始化代碼如下voidMy_EXTI_Init(void){NVIC_InitTypeDefNVIC_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能時(shí)鐘GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);//選擇GPIOE2管腳用作外部中斷線路GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);//選擇GPIOE3管腳用作外部中斷線路GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);//選擇GPIOE4管腳用作外部中斷線路GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//選擇GPIOA0管腳用作外部中斷線路//EXTI0NVIC配置NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//EXTI0中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化VIC寄存器//EXTI2NVIC配置NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;//EXTI2中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;//子優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化VIC寄存器//EXTI3NVIC配置NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;//EXTI3中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//子優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化VIC寄存器//EXTI4NVIC配置NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;//EXTI4中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//子優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能
NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化NVIC寄存器EXTI_InitStructure.EXTI_Line=EXTI_Line0;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);EXTI_InitStructure.EXTI_Line=EXTI_Line2|EXTI_Line3|EXTI_Line4;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);}(2)編寫EXTI中斷服務(wù)函數(shù)初始化EXTI后,中斷就已經(jīng)開啟了,當(dāng)任意按鍵按下后會(huì)觸發(fā)一次中斷,這時(shí)程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 11《葡萄溝》教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版二年級(jí)語文上冊(cè)
- 《自救技能get》主題班會(huì)教學(xué)設(shè)計(jì)
- 2024新教材高中地理 第一章 人口與地理環(huán)境 第一節(jié) 人口分布教學(xué)設(shè)計(jì) 湘教版必修第二冊(cè)
- 13 貓 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文四年級(jí)下冊(cè)統(tǒng)編版
- 2024-2025學(xué)年高中物理 第2章 3 勻變速直線運(yùn)動(dòng)的位移與時(shí)間的關(guān)系教學(xué)設(shè)計(jì) 新人教版必修1
- 13《人物描寫一組》 教學(xué)設(shè)計(jì)-2023-2024學(xué)年語文五年級(jí)下冊(cè)統(tǒng)編版
- 肥胖患者的氣道管理
- Unit 1 My school Part B Read and write Part C Story time(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語四年級(jí)下冊(cè)
- 2023六年級(jí)數(shù)學(xué)下冊(cè) 一 歡樂農(nóng)家游-百分?jǐn)?shù)(二)信息窗2 青島假日游-百分?jǐn)?shù)實(shí)際問題第1課時(shí)教學(xué)設(shè)計(jì) 青島版六三制
- Unit 4 Plants around us 單元整體(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 日本履歷書模板
- 銀行賬戶借用合同協(xié)議書范本
- 2022-2023年棉花行業(yè)洞察報(bào)告PPT
- 《工程質(zhì)進(jìn)度-質(zhì)量管理》培訓(xùn)課件
- 精神科癥狀學(xué)演示課件
- 2.抗美援朝課件(共25張PPT)
- 運(yùn)動(dòng)特質(zhì)自信量表
- 《CSS樣式表的使用》教學(xué)設(shè)計(jì)
- 養(yǎng)老護(hù)理員考試多選題含答案
- 北師大版小學(xué)數(shù)學(xué)六年級(jí)總復(fù)習(xí)知識(shí)點(diǎn)匯總
- 專利權(quán)轉(zhuǎn)讓合同-電子科技大學(xué)計(jì)算機(jī)學(xué)院(20211109173408)
評(píng)論
0/150
提交評(píng)論