新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32外部中斷易出錯總結(jié)

        STM32外部中斷易出錯總結(jié)

        作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
        前言:這些問題都是我之前在工作中遇到的,后來覺得需要總結(jié),自己記憶不好,所以在這個給自己打個mark。

        一:觸發(fā)方式

        本文引用地址:http://www.104case.com/article/201611/321888.htm

        STM32外部中斷是通過邊沿來觸發(fā)的,不支持電平觸發(fā);

        二:外部中斷分組

        STM32的每一個GPIO都能配置成一個外部中斷觸發(fā)源,STM32通過根據(jù)引腳的序號不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16組,STM32規(guī)定,每一組中同時只能有一個中斷觸發(fā)源工作,那么,最多工作的也就是16個外部中斷。

        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時鐘開啟

        l外部中斷配置

        這個主要是中斷線路選擇,中斷觸發(fā)方式,中斷使能。

        l中斷優(yōu)先級配置NVIC

        l中斷處理函數(shù)的編寫。

        四:外部中斷函數(shù)不能進(jìn)入的原因分析

        結(jié)合我工作中的遇到的問題可以分為:

        1)GPIO或者AFIO的時鐘沒有開啟;

        2)GPIO和配置的中斷線路不匹配;

        3)中斷觸發(fā)方式和實(shí)際不相符合;

        4)中斷處理函數(shù)用庫函數(shù)時,寫錯,經(jīng)??赡艹霈F(xiàn)數(shù)字和字母之間沒有下劃線;

        5)外部中斷是沿觸發(fā),有可能不能檢測到沿,比如中斷線是低電平(浮空輸入),觸發(fā)是下降沿觸發(fā),可能會出現(xiàn)一直是低電平,高電平的時候是一樣的情況,電平持續(xù)為高電平;

        6)沒有用軟件中斷來觸發(fā)外部中斷,調(diào)用函數(shù)EXTI_GenerateSWInterrupt;,因?yàn)檐浖袛嘞扔谶呇刂袛嗵幚怼?/p>

        我的問題出現(xiàn)在沒有啟動AFIO時鐘信號;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);導(dǎo)致總也進(jìn)不了中斷



        關(guān)鍵詞: STM32外部中斷易出錯總

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 石渠县| 偃师市| 叙永县| 佛山市| 镇沅| 云浮市| 五峰| 金乡县| 绥化市| 滨州市| 华池县| 贵南县| 河北省| 前郭尔| 镇坪县| 华宁县| 隆子县| 邵阳市| 福建省| 磐安县| 余姚市| 徐水县| 同心县| 荥阳市| 翁牛特旗| 高陵县| 株洲市| 徐水县| 平远县| 澜沧| 龙游县| 汉寿县| 新闻| 永州市| 峨边| 东丽区| 石门县| 昆明市| 柏乡县| 隆化县| 驻马店市|