資源描述:
《5.stm32 exti外設(shè)(外部中斷)(區(qū)別于一般外設(shè))》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、EXTI外設(shè)STM32有76個(gè)中斷,包括16個(gè)內(nèi)核中斷和60個(gè)可屏蔽外部中斷,具有16級(jí)可編程的中斷優(yōu)先級(jí)。根據(jù)中斷觸發(fā)源的不同,外部中斷也是可以分為:l內(nèi)置外設(shè)的觸發(fā)。此時(shí),對(duì)應(yīng)的IO口(若為輸出)必須設(shè)置為復(fù)用功能,并使能外設(shè)的時(shí)鐘。在中斷向量表中有53個(gè)中斷通道與之對(duì)應(yīng)(除下述的7個(gè))。l如下圖所示,在外設(shè)方框中有EXTI外設(shè)部分,說(shuō)明了IO口也可以作為中斷的觸發(fā)源,用也檢測(cè)外部輸入信號(hào)的邊沿變化,在中斷向量表中有7個(gè)中斷通道與之對(duì)應(yīng)分別是:EXTI15_10_IRQChannel;EXTI9_5_IRQChannel;EXTI4_IRQCh
2、annel;EXTI3_IRQChannel;EXTI2_IRQChannel;EXTI1_IRQChannel;EXTI0_IRQChannel。注意:1.我們知道,當(dāng)IO口作為通用GPIO時(shí),只能輸入或者輸出高低電平;若IO口要作為外部中斷源,則必須配置為復(fù)用AFIO(雖然IO口作為輸入時(shí),沒(méi)有復(fù)用一說(shuō),但是這里說(shuō)的配置為復(fù)用AFIO是指使能AFIO的時(shí)鐘)。2.又見(jiàn)下圖,雖然EXTI外設(shè)和AFIO外設(shè)都是掛在APB2總線上,但是在使用EXTI外設(shè)時(shí)只需要使能的時(shí)鐘時(shí)AFIO時(shí)鐘。(?。。∏f(wàn)別忘記啟動(dòng)RCC_APB2Periph_AFIO??!
3、!,否則管腳只能做普通高低電平來(lái)用。)STM32的EXTI外設(shè)控制器寄存器支持19個(gè)外部中斷/事件請(qǐng)求。每個(gè)中斷設(shè)有狀態(tài)位,每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置(IMR和EMR)。STM32的19個(gè)外部中斷對(duì)應(yīng)著19路中斷線,分別是EXTI_Line0-EXTI_Line18:線0~15:對(duì)應(yīng)外部IO口的輸入中斷。線16:連接到PVD輸出。PVD(ProgrammableVoltageDetector),即可編程電壓監(jiān)測(cè)器。應(yīng)用于STM32ARM芯片中,作用是監(jiān)視供電電壓,在供電電壓下降到給定的閥值以下時(shí),產(chǎn)生一個(gè)中斷,通知軟件做緊急處理。當(dāng)供電
4、電壓又恢復(fù)到給定的閥值以上時(shí),也會(huì)產(chǎn)生一個(gè)中斷,通知軟件供電恢復(fù)。線17:連接到RTC鬧鐘事件。RTC是多種名詞的縮寫(xiě),如:實(shí)時(shí)時(shí)鐘(Real-TimeClock)線18:連接到USB喚醒事件。注意:1.線0~15是與EXTI外設(shè)對(duì)應(yīng)的,每條中斷線對(duì)應(yīng)7個(gè)IO口,如EXTI_line0對(duì)應(yīng)PA0,PB0,PC0,PD0,PE0,PF0,PG0(一般只有PA0~PE0)。由于一條中斷線對(duì)應(yīng)著多個(gè)IO口,所以在使用中斷線之前要進(jìn)行中斷線配置。如信號(hào)由PB9輸入檢測(cè),則需要進(jìn)行如下設(shè)置:/*ConnectEXTILine9toPB.09*/GPIO_EX
5、TILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);//確定外部輸入信號(hào)的端口(實(shí)際上這句話是設(shè)置AFIO_CRx)EXTI_InitStructure.EXTI_Line=EXTI_Line9;//設(shè)置中斷線line9,那么意味著對(duì)應(yīng)的中斷通道則是EXTI9_5_IRQChannel1.每條中斷線在任意一個(gè)時(shí)刻,只可以被一個(gè)IO口占用,可以時(shí)分復(fù)用。2.雖然剩下的線(16~18)是跟其他外設(shè)相關(guān),但是在使用前也是需要配置中斷線的。3.中斷觸發(fā)方式:STM32的外部中斷是通過(guò)邊沿來(lái)觸發(fā)(RTSR和F
6、TSR)的,不支持電平觸發(fā)。?。外部中斷寄存器EXTICR寄存器組,總共有4個(gè),因?yàn)榫幾g器的寄存器組都是從0開(kāi)始編號(hào)的,所以EXTICR[0]~EXTICR[3],對(duì)應(yīng)《STM32參考手冊(cè)》里的EXTICR1~EXTICR4。每個(gè)EXTICR只用了其低16位,這些為均由軟件讀寫(xiě)。EXTICR[0]~EXTICR[3]的分配如下:EXTI寄存器的結(jié)構(gòu)體:typedefstruct{vu32IMR;vu32EMR;vu32RTSR;vu32FTSR;vu32SWIER;vu32PR;}EXTI_TypeDef;IMR:中斷屏蔽寄存器這是一個(gè)32寄存器。
7、但是只有前19位有效(對(duì)應(yīng)19條線)。當(dāng)位x設(shè)置為1時(shí),則開(kāi)啟這個(gè)線上的中斷,否則關(guān)閉該線上的中斷。EMR:事件屏蔽寄存器同IMR,只有前19位有效。只是該寄存器是針對(duì)事件的屏蔽和開(kāi)啟。RTSR:上升沿觸發(fā)選擇寄存器該寄存器同IMR,也是一個(gè)32為的寄存器,只有前19位有效。位x對(duì)應(yīng)線x上的上升沿觸發(fā),如果設(shè)置為1,則是允許上升沿觸發(fā)中斷/事件。否則,不允許。FTSR:下降沿觸發(fā)選擇寄存器同PTSR,只有前19位有效,不過(guò)這個(gè)寄存器是設(shè)置下降沿的。下降沿和上升沿可以被同時(shí)設(shè)置,這樣就變成了任意電平觸發(fā)了。SWIER:軟件中斷事件寄存器(基本不用)1
8、.由下圖可知,未使能x線的IMR和EMR位時(shí),且當(dāng)SWIERx位為0時(shí),通過(guò)向該位寫(xiě)入1(即編號(hào)3的或門(mén)一個(gè)腳輸入1),將