嵌入式技術(shù)應(yīng)用與開發(fā)項(xiàng)目教程(STM32)課件 模塊4 外部中斷事件控制器EXTI_第1頁
嵌入式技術(shù)應(yīng)用與開發(fā)項(xiàng)目教程(STM32)課件 模塊4 外部中斷事件控制器EXTI_第2頁
嵌入式技術(shù)應(yīng)用與開發(fā)項(xiàng)目教程(STM32)課件 模塊4 外部中斷事件控制器EXTI_第3頁
嵌入式技術(shù)應(yīng)用與開發(fā)項(xiàng)目教程(STM32)課件 模塊4 外部中斷事件控制器EXTI_第4頁
嵌入式技術(shù)應(yīng)用與開發(fā)項(xiàng)目教程(STM32)課件 模塊4 外部中斷事件控制器EXTI_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

模塊4外部中斷/事件控制器EXTI項(xiàng)目4電子門鈴之按鍵中斷主要內(nèi)容和學(xué)習(xí)重點(diǎn)項(xiàng)目4:電子門鈴之按鍵中斷知識(shí)準(zhǔn)備STM32F1系列MCU的中斷區(qū)分異常與中斷GPIOEXTI外部中斷/事件控制器區(qū)分中斷觸發(fā)與事件觸發(fā)項(xiàng)目實(shí)施電子門鈴之按鍵中斷:基于M3主控模塊電子門鈴之按鍵中斷:基于Proteus仿真項(xiàng)目實(shí)施(續(xù))習(xí)題項(xiàng)目探究EXTI初始化EXTI中斷處理——重點(diǎn)知識(shí)拓展STM32啟動(dòng)程序EXTI功能解讀模塊小結(jié)制作者或logo目錄2知識(shí)準(zhǔn)備:STM32F1系列MCU的中斷異常和中斷所有能打斷正常執(zhí)行流的事件都稱為異常。STM32的異常是指由于CPU內(nèi)部事件所引起的打斷,如程序出錯(cuò)、服務(wù)調(diào)用等;中斷是指由于CPU外部的設(shè)備的事件引起的打斷,如串口接收中斷、打印機(jī)中斷等。STM32F10xxx的非互聯(lián)型產(chǎn)品提供10個(gè)異常和60個(gè)可屏蔽的中斷通道請(qǐng)查閱參考手冊(cè)”表55其它STM32F10xxx產(chǎn)品(小容量、中容量和大容量)的向量表”

除了個(gè)別異常的優(yōu)先級(jí)為固定,其他的異常和中斷都可設(shè)置優(yōu)先級(jí)Cortex-M3支持(11+5保留)的異常和最多240個(gè)中斷制作者或logo項(xiàng)目4:電子門鈴3—中斷服務(wù)程序的入口地址中斷屏蔽、中斷使能、中斷請(qǐng)求、中斷響應(yīng)、中斷嵌套、中斷掛起中斷向量知識(shí)準(zhǔn)備:STM32F1系列MCU的中斷嵌套向量中斷控制器NVICNestedVectoredInterruptControllerNVIC是Cortex-M3的一個(gè)外設(shè),用于管理中斷、電源等功能。Cortex-M3使用8位的寄存器用于設(shè)置中斷的優(yōu)先級(jí)別,理論上可以設(shè)置256級(jí)。STM32的NVICIPR只使用其中的4位來區(qū)分優(yōu)先級(jí)別,這4個(gè)bit又被分成搶占優(yōu)先級(jí)和子優(yōu)先級(jí),其各自所占位數(shù)由寄存器SCB_AIRCR的[位8:位10]的值決定。制作者或logo項(xiàng)目4:電子門鈴4——中文參考手冊(cè)知識(shí)準(zhǔn)備:STM32F1系列MCU的中斷STM32使用4位來區(qū)分優(yōu)先級(jí)別,這4個(gè)bit又被分成搶占優(yōu)先級(jí)和子優(yōu)先級(jí),其各自所占位數(shù)由寄存器SCB_AIRCR的[位8:位10]的值決定。所有4位-搶占(組)優(yōu)先級(jí)-STM32CubeMX默認(rèn)項(xiàng)高3位-搶占(組)優(yōu)先級(jí),低1位-子優(yōu)先級(jí)高2位-搶占(組)優(yōu)先級(jí),低2位-子優(yōu)先級(jí)高1位-搶占(組)優(yōu)先級(jí),低3位-子優(yōu)先級(jí)所有4位-子優(yōu)先級(jí)只有搶占優(yōu)先級(jí)高的中斷能夠打斷搶占優(yōu)先級(jí)低的中斷,子優(yōu)先級(jí)只決定響應(yīng)順序!如果搶占優(yōu)先級(jí)和子優(yōu)先級(jí)都相同,就按向量表的優(yōu)先級(jí)制作者或logo項(xiàng)目4:電子門鈴5知識(shí)準(zhǔn)備:STM32F1系列MCU的中斷–NVIC優(yōu)先級(jí)別的設(shè)置↙在STM32CUBEMX中設(shè)置NVIC優(yōu)先級(jí)別數(shù)值越小,優(yōu)先級(jí)別越高制作者或logo項(xiàng)目4:電子門鈴6摘自《STM32F10xxxCortex-M3編程手冊(cè)》↓↑下載自/resource/en/programming_manual/cd00228163-stm32f10xxx-20xxx-21xxx-l1xxxx-cortex-m3-programming-manual-stmicroelectronics.pdf摘自STM32CUBEMX↓

知識(shí)準(zhǔn)備:

GPIOEXTI外部中斷/事件控制器STM32F1系列微控制器所有端口都有外部中斷能力;為了使用外部中斷線,端口必須配置成輸入模式;——中文參考手冊(cè)8.1.3STM32F1系列大、中、小容量微控制器的外部中斷/事件控制器由19個(gè)能產(chǎn)生事件/中斷請(qǐng)求的邊沿檢測(cè)器組成中斷和事件中斷通常用于由ARM內(nèi)核(NVIC、中斷處理程序等)執(zhí)行幾行代碼;事件不需要執(zhí)行代碼,但可以通知另一個(gè)外圍設(shè)備在沒有CPU干預(yù)的情況下執(zhí)行某些操作。例如,外部中斷或定時(shí)器可以生成一個(gè)事件來觸發(fā)ADC進(jìn)行采樣,然后使用DMA將測(cè)量值寫入內(nèi)存,而無需喚醒ARM核心處理器—理論上不執(zhí)行任何代碼,即可完成這些工作。制作者或logo項(xiàng)目4:電子門鈴7——中文參考手冊(cè)9.2邊沿觸發(fā)觸發(fā)中斷觸發(fā)事件從GPIO引腳輸入↙EXTI框圖知識(shí)準(zhǔn)備:

GPIOEXTI外部中斷/事件控制器外部中斷/事件線↓摘自中文參考手冊(cè)表55制作者或logo項(xiàng)目4:電子門鈴8↙摘自中文參考手冊(cè)PVD—可編程電壓監(jiān)測(cè)器↙摘自中文參考手冊(cè)圖20之后的說明部分觸發(fā)中斷觸發(fā)事件EXTI框圖↖從GPIO引腳輸入知識(shí)準(zhǔn)備:

GPIOEXTI外部中斷/事件控制器外部中斷/事件線EXTI0-15用于GPIOEXTI5~EXTI9共用一個(gè)中斷通道EXTI10~EXTI15共用一個(gè)中斷通道制作者或logo項(xiàng)目4:電子門鈴9…↓摘自中文參考手冊(cè)表55↙↘摘自中文參考手冊(cè)圖20摘自中文參考手冊(cè)圖20→以及圖后的說明↘知識(shí)準(zhǔn)備:STM32CUBEMXGPIO模式上升沿觸發(fā)中斷下降沿觸發(fā)中斷上升沿和下降沿都觸發(fā)中斷上升沿觸發(fā)事件下降沿觸發(fā)事件上升沿和下降沿都觸發(fā)事件GPIO的上拉/下拉制作者或logo項(xiàng)目4:電子門鈴10項(xiàng)目實(shí)施:基于M3主控模塊項(xiàng)目4:電子門鈴之外部中斷按住KEY1,蜂鳴器以250Hz的頻率發(fā)聲;放開KEY1,關(guān)閉蜂鳴器配置STM32CUBEMX,并生成MDK-ARM源代碼編寫代碼,編譯和調(diào)試程序下載程序250Hz的頻率發(fā)聲→每隔1/250/2=0.002秒切換1次蜂鳴器的引腳電平使用外部中斷功能制作者或logo項(xiàng)目4:電子門鈴11←摘自1+X傳感網(wǎng)考證設(shè)備“M3主控模塊”電路圖→項(xiàng)目實(shí)施:STM32CUBEMX的設(shè)置MCU選型、RCC和SYS,時(shí)鐘ClockConfiguration和項(xiàng)目ProjectManagerGPIO設(shè)置KEY1設(shè)置為GPIO_EXTI13-外部中斷/事件線13觸發(fā)模式輸入模式用戶標(biāo)簽EXTI線中斷使能LED與蜂鳴器按照任務(wù)3-1的設(shè)置方式制作者或logo項(xiàng)目4:電子門鈴12②③④⑤↖按照任務(wù)1-1的設(shè)置←NVIC優(yōu)先級(jí)分組設(shè)置①重要!②③④在main.c中重定義HAL_GPIO_EXTI_Callback()函數(shù),也可以寫在GPIO.C文件中注意寫在用戶代碼位置中,同學(xué)可自行編寫代碼,此代碼做為參考結(jié)果驗(yàn)證:M3主控模塊中按下KEY1時(shí)蜂鳴器發(fā)出聲音項(xiàng)目實(shí)施:代碼編寫和結(jié)果驗(yàn)證制作者或logo項(xiàng)目4:電子門鈴13請(qǐng)?jiān)诒緟⒖即a的基礎(chǔ)上,修改外部中斷的觸發(fā)模式,體會(huì)不同觸發(fā)模式的效果。別忘了寫變量key1_flag的聲明!所有外部中斷線通用的回調(diào)函數(shù)↖注意添加參數(shù)←添加關(guān)閉蜂鳴器的代碼

(參考項(xiàng)目3)項(xiàng)目實(shí)施:請(qǐng)將代碼添寫到正確的位置/*Privatevariables--------------------*//*USERCODEBEGINPV*//*USERCODEENDPV*/…略…intmain(void){HAL_Init();SystemClock_Config();/*Initializeallconfiguredperipherals*/MX_GPIO_Init();/*USERCODEBEGIN2*/

/*USERCODEEND2*/

/*Infiniteloop*/

/*USERCODEBEGINWHILE*/while(1){

/*USERCODEENDWHILE*/

/*USERCODEBEGIN3*/}

/*USERCODEEND3*/}/*注main()到此結(jié)束*/…略…/*USERCODEBEGIN4*//*USERCODEEND4*/制作者或logo項(xiàng)目4:電子門鈴14①②結(jié)果驗(yàn)證結(jié)果驗(yàn)證M3主控模塊中按下KEY1時(shí)喇叭發(fā)出聲音;放開KEY1時(shí)喇叭關(guān)閉制作者或logo項(xiàng)目4:電子門鈴15項(xiàng)目實(shí)施:基于proteus仿真項(xiàng)目4:電子門鈴之按鍵中斷按住KEY11,蜂鳴器以250Hz的頻率發(fā)聲;放開KEY11,關(guān)閉蜂鳴器按下KEY12,LED11亮;再次按下KEY12,LED11滅;依次輪換…配置STM32CUBEMX,生成MDK-ARM源代碼編寫代碼,編譯和調(diào)試程序下載程序進(jìn)行驗(yàn)證250Hz的頻率發(fā)聲→每隔1/250/2=0.002秒

切換1次連接蜂鳴器的引腳電平使用外部中斷功能制作者或logo項(xiàng)目4:電子門鈴16項(xiàng)目實(shí)施:STM32CUBEMX的設(shè)置MCU選型、RCC和SYS,時(shí)鐘ClockConfiguration和項(xiàng)目ProjectManagerGPIO設(shè)置KEY11設(shè)置為GPIO_EXTI13-外部中斷/事件線13觸發(fā)模式輸入模式用戶標(biāo)簽EXTI線中斷使能LED與蜂鳴器按照之前的設(shè)置制作者或logo項(xiàng)目4:電子門鈴17②③④⑤↖按照任務(wù)1-4的設(shè)置←NVIC優(yōu)先級(jí)分組設(shè)置①重要?、冖邰躃EY12設(shè)置項(xiàng)目實(shí)施:代碼編寫和結(jié)果驗(yàn)證在main.c中重定義HAL_GPIO_EXTI_Callback()函數(shù),也可以寫在GPIO.C文件中注意寫在用戶代碼位置中制作者或logo項(xiàng)目4:電子門鈴18所有外部中斷線通用的回調(diào)函數(shù)自行項(xiàng)目實(shí)施:請(qǐng)將代碼添寫到正確的位置/*Privatevariables--------------------*//*USERCODEBEGINPV*//*USERCODEENDPV*/…略…intmain(void){HAL_Init();SystemClock_Config();/*Initializeallconfiguredperipherals*/MX_GPIO_Init();/*USERCODEBEGIN2*/

/*USERCODEEND2*/

/*Infiniteloop*/

/*USERCODEBEGINWHILE*/while(1){

/*USERCODEENDWHILE*/

/*USERCODEBEGIN3*/}

/*USERCODEEND3*/}/*注main()到此結(jié)束*/…略…/*USERCODEBEGIN4*//*USERCODEEND4*/制作者或logo項(xiàng)目4:電子門鈴19①②結(jié)果驗(yàn)證結(jié)果驗(yàn)證:仿真電路中按下KEY11時(shí)喇叭發(fā)出聲音KEY11被按下時(shí),紅框內(nèi)小方塊不停地在藍(lán)色和紅色之間切換,表示SOUNDER上方引腳不停地在高低電位之間切換;制作者或logo項(xiàng)目4:電子門鈴20習(xí)題/拓展任務(wù)習(xí)題:改變項(xiàng)目KEY1/KEY11的邊沿觸發(fā)方式為僅下降沿觸發(fā),效果有何不同?操作題嘗試修改項(xiàng)目代碼,通過“__HAL_GPIO_EXTI_GENERATE_SWIT(KEY1_Pin)”實(shí)現(xiàn):按下并放開KEY2后軟件產(chǎn)生KEY1中斷,使門鈴響鈴。注:無法使用中斷的按鍵可采用輪詢方式檢測(cè)。制作者或logo項(xiàng)目4:電子門鈴21項(xiàng)目探究:?jiǎn)⒂肊XTI時(shí)的初始化MX_GPIO_Init函數(shù)→制作者或logo項(xiàng)目4:電子門鈴22③①②①②③項(xiàng)目探究:EXTI中斷處理STM32外部中斷的中斷處理當(dāng)中斷發(fā)生后中斷源向CPU提出中斷申請(qǐng)CPU中斷響應(yīng)根據(jù)中斷向量跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序去執(zhí)行制作者或logo項(xiàng)目4:電子門鈴23注意:若EXTI線中斷未使能,則stm32f1xx_it.c文件中不會(huì)出現(xiàn)此IRQHandler函數(shù)的定義項(xiàng)目探究:EXTI中斷處理STM32外部中斷的中斷處理-續(xù)在stm32f1xx_it.c文件中找到EXTI15_10_IRQHandler()函數(shù)后,將發(fā)現(xiàn)該函數(shù)調(diào)用了stm32f1xx_hal_gpio.c文件中的HAL庫函數(shù)HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);↗而HAL_GPIO_EXTI_IRQHandler函數(shù)在其定義中又調(diào)用了同一個(gè)文件中的回調(diào)函數(shù)HAL_GPIO_EXTI_Callback(GPIO_Pin)注意:此回調(diào)函數(shù)具有__weak屬性制作者或logo項(xiàng)目4:電子門鈴24中斷服務(wù)函數(shù)的回調(diào)函數(shù)用戶需要在用戶文件中重定義這個(gè)回調(diào)函數(shù),將中斷程序的功能寫在此函數(shù)中!知識(shí)拓展:?jiǎn)?dòng)程序和EXTI中斷處理EDIT菜單“FindinFiles”查找何處調(diào)用了EXTI15_10_IRQHandler()函數(shù)startup_stm32f103xe.s

是匯編語言的啟動(dòng)文件常見錯(cuò)誤提醒:若STM32CUBEMX沒有Enable中斷源↑,該中斷源的IRQHandler函數(shù)定義將不會(huì)出現(xiàn)在stm32f1xx_it.c,用戶重定義的回調(diào)函數(shù)將不會(huì)被執(zhí)行制作者或logo項(xiàng)目4:電子門鈴25①③②知識(shí)拓展:

啟動(dòng)程序和EXTI中斷處理外部中斷處理函數(shù)制作者或logo項(xiàng)目4:電子門鈴26①③⑤↖用戶編程①STM32CUBEMX中有使能EXTI中斷此函數(shù)定義才會(huì)在stm32f1xx_It.c

溫馨提示

  • 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)論