上課實例2外部中斷_第1頁
上課實例2外部中斷_第2頁
上課實例2外部中斷_第3頁
上課實例2外部中斷_第4頁
上課實例2外部中斷_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實例2 外部中斷STM32 有 84 個中斷,包括 16 個內(nèi)核中斷和 68 個可屏蔽中斷,具有 16 級可編程的中斷優(yōu)先級(使用了4位中斷優(yōu)先級) 。STM32 的 68 個可屏蔽中斷,在 STM32F103 系列只有 60 個(在 107 系列才有 68 個)。中斷和異常向量5.6 外部中斷和中斷控制器STM32F10 xxx產(chǎn)品的向量表5.6 外部中斷和中斷控制器5.6 外部中斷和中斷控制器5.6 外部中斷和中斷控制器中斷優(yōu)先級分組函數(shù)void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);STM32 將中斷分為 5 個組,組

2、 04。該分組的設(shè)置是由 SCB-AIRCR 寄存器的 bit108 來定義的。NVIC 中斷優(yōu)先級管理中斷初始化函數(shù) void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);typedef structuint8_t NVIC_IRQChannel;uint8_t NVIC_IRQChannelPreemptionPriority; uint8_t NVIC_IRQChannelSubPriority;FunctionalState NVIC_IRQChannelCmd; NVIC_InitTypeDef;1、NVIC_IRQChannel:定義初

3、始化的是哪個中斷,可以在stm32f10 x.h 中找到每個中斷對應(yīng)的名字。例如 USART1_IRQn。2、NVIC_IRQChannelPreemptionPriority:定義這個中斷的搶占優(yōu)先級別。3、NVIC_IRQChannelSubPriority:定義這個中斷的子優(yōu)先級別。4、NVIC_IRQChannelCmd:該中斷是否使能。NVIC庫函數(shù)外部中斷STM32F103 的中斷控制器支持 19 個外部中斷/事件請求。每個中斷設(shè)有狀態(tài)位,每個中斷/事件都有獨立的觸發(fā)和屏蔽設(shè)置。STM32 的每個 IO 都可以作為外部中斷的中斷輸入口,這點也是 STM32 的強大之處。STM32F

4、103 的19 個外部中斷為:線 015:對應(yīng)外部 IO 口的輸入中斷。線 16:連接到 PVD 輸出。線 17:連接到 RTC 鬧鐘事件。線 18:連接到 USB 喚醒事件。stm32之事件與中斷區(qū)別 事件是中斷的觸發(fā)源,開放了對應(yīng)的中斷屏蔽位,則事件可以觸發(fā)相應(yīng)的中斷。事件還是其它一些操作的觸發(fā)源,比如DMA,還有TIM中影子寄存器的傳遞與更新;簡單點就是中斷一定要有中斷服務(wù)函數(shù),但是事件卻沒有對應(yīng)的函數(shù).但是事件可以觸發(fā)其他關(guān)聯(lián)操作,比如觸發(fā)DMA,觸發(fā)ADC采樣等. 可以在不需要CPU干預(yù)的情況下,執(zhí)行這些操作. 中斷則必須要CPU介入.使用 IO 口外部中斷的一般步驟:1)初始化 I

5、O 口為輸入。void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);2)開啟 IO 口復(fù)用時鐘,設(shè)置 IO 口與中斷線的映射關(guān)系。使能復(fù)用功能時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);配置 GPIO 與中斷線的映射關(guān)系的函數(shù)void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)3)初始化線上中斷,設(shè)置觸發(fā)條件等。中斷線上中斷的初始化是通過函數(shù) void

6、EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);4)配置中斷分組(NVIC),并使能中斷。中斷優(yōu)先級分組函數(shù) void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);中斷初始化函數(shù)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)5)編寫中斷服務(wù)函數(shù)(最后要清除中斷標(biāo)志位 )。EXTI_InitTypeDeftypedef structuint32_t EXTI_Line; EXTIMode_TypeDef EXTI_Mode; EXTITri

7、gger_TypeDef EXTI_Trigger; FunctionalState EXTI_LineCmd; EXTI_InitTypeDef;第一個參數(shù)是中斷線的標(biāo)號,取值范圍為EXTI_Line0EXTI_Line15。第二個參數(shù)是中斷模式,可選值為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。第三個參數(shù)是觸發(fā)方式,可以是下降沿觸發(fā) EXTI_Trigger_Falling,上升沿觸發(fā) EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發(fā)EXTI_Trigger_Rising_Falling。最后一個參數(shù)是使能中斷線。STM

8、32 的 IO 口外部中斷函數(shù)只有 6 個,分別為:EXPORT EXTI0_IRQHandler EXPORT EXTI1_IRQHandler EXPORT EXTI2_IRQHandler EXPORT EXTI3_IRQHandler EXPORT EXTI4_IRQHandler EXPORT EXTI9_5_IRQHandler EXPORT EXTI15_10_IRQHandler 中斷線 0-4 每個中斷線對應(yīng)一個中斷函數(shù),中斷線 5-9 共用中斷函數(shù) EXTI9_5_IRQHandler,中斷線 10-15 共用中斷函數(shù) EXTI15_10_IRQHandler。清除中斷標(biāo)志位void EXTI_ClearITPendingBit(uint32_t EXTI_Line);中斷線 5-9 共用中斷函數(shù)如何區(qū)分不同中斷?如果是Line6,Line7產(chǎn)生的EXTI在 Void EXTI9_5_IRQHandler(Void) 是怎么區(qū)分的呢?中斷服務(wù)函數(shù)里進(jìn)行判斷即可 if(EXTI_GetITStatus(EXTI_Line6) != RESET)if(EXTI_GetITStatus(EXTI_Line7) != RESET)要求使用外部中斷實現(xiàn):1、按

溫馨提示

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

最新文檔

評論

0/150

提交評論