微機(jī)原理及單片機(jī)應(yīng)用技術(shù)-中斷_第1頁
微機(jī)原理及單片機(jī)應(yīng)用技術(shù)-中斷_第2頁
微機(jī)原理及單片機(jī)應(yīng)用技術(shù)-中斷_第3頁
微機(jī)原理及單片機(jī)應(yīng)用技術(shù)-中斷_第4頁
微機(jī)原理及單片機(jī)應(yīng)用技術(shù)-中斷_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論