STM32 外部中斷 易出錯(cuò)總結(jié)
一:觸發(fā)方式
本文引用地址:http://m.butianyuan.cn/article/201611/318695.htmSTM32的外部中斷是通過邊沿來觸發(fā)的,不支持電平觸發(fā);
二:外部中斷分組
STM32的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,STM32通過根據(jù)引腳的序號不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16組,STM32規(guī)定,每一組中同時(shí)只能有一個(gè)中斷觸發(fā)源工作,那么,最多工作的也就是16個(gè)外部中斷。
STM32分組和對應(yīng)中斷處理函數(shù)分配:
管腳 | 中斷標(biāo)志 | 中斷處理函數(shù)分配 |
PA0~PG0 | EXTI0 | EXTI0_IRQHandler |
PA1~PG1 | EXTI1 | EXTI1_IRQHandler |
PA2~PG2 | EXTI2 | EXTI2_IRQHandler |
PA3~PG3 | EXTI3 | EXTI3_IRQHandler |
PA4~PG4 | EXTI4 | EXTI4_IRQHandler |
PA5~PG5 | EXTI5 | EXTI9_5_IRQHandler |
PA6~PG6 | EXTI6 | |
PA7~PG7 | EXTI7 | |
PA8~PG8 | EXTI8 | |
PA9~PG9 | EXTI9 | |
PA10~PG10 | EXTI10 | EXTI15_10_IRQHandler |
PA11~PG11 | EXTI11 | |
PA12~PG12 | EXTI12 | |
PA13~PG13 | EXTI13 | |
PA14~PG14 | EXTI14 | |
PA15~PG15 | EXTI15 |
三:外部中斷的配置過程
l配置觸發(fā)源-GPIO
觸發(fā)源為通過GPIO端口輸入,所以,要配置GPIO的模式,輸入方式,輸入方式有以下幾種:
1.GPIO_Mode_AIN,模擬輸入(ADC模擬輸入,或者低功耗下省電)
2.GPIO_Mode_IN_FLOATING,浮空輸入
3.GPIO_Mode_IPD=0x28,帶下拉輸入
4.GPIO_Mode_IPU=0x48,帶上拉輸入
l引腳與外部中斷關(guān)聯(lián)
l外部中斷AFIO時(shí)鐘開啟
l外部中斷配置
這個(gè)主要是中斷線路選擇,中斷觸發(fā)方式,中斷使能。
l中斷優(yōu)先級配置NVIC
l中斷處理函數(shù)的編寫。
四:外部中斷函數(shù)不能進(jìn)入的原因分析
結(jié)合我工作中的遇到的問題可以分為:
1)GPIO或者AFIO的時(shí)鐘沒有開啟;
2)GPIO和配置的中斷線路不匹配;
3)中斷觸發(fā)方式和實(shí)際不相符合;
4)中斷處理函數(shù)用庫函數(shù)時(shí),寫錯(cuò),經(jīng)??赡艹霈F(xiàn)數(shù)字和字母之間沒有下劃線;
5)外部中斷是沿觸發(fā),有可能不能檢測到沿,比如中斷線是低電平(浮空輸入),觸發(fā)是下降沿觸發(fā),可能會出現(xiàn)一直是低電平,高電平的時(shí)候是一樣的情況,電平持續(xù)為高電平;
6)沒有用軟件中斷來觸發(fā)外部中斷,調(diào)用函數(shù)EXTI_GenerateSWInterrupt;,因?yàn)檐浖袛嘞扔谶呇刂袛嗵幚怼?/p>
評論