0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32GPIO外部中斷的詳細(xì)解析和總結(jié)

5RJg_mcuworld ? 2017-12-18 16:38 ? 次閱讀

1

STM32中斷分組

STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是 STM32 的強(qiáng)大之處。STM32 通過(guò)根據(jù)引腳的序號(hào)不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類(lèi)推,我們能得出一共有16 組,STM32 規(guī)定,每一組中同時(shí)只能有一個(gè)中斷觸發(fā)源工作,那么,最多工作的也就是16個(gè)外部中斷。STM32F103 的中斷控制器支持 19 個(gè)外部中斷/事件請(qǐng)求。每個(gè)中斷設(shè)有狀態(tài)位,每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置。STM32F103 的19 個(gè)外部中斷為:

線(xiàn) 0~15:對(duì)應(yīng)外部 IO 口的輸入中斷。

線(xiàn) 16:連接到 PVD 輸出。

線(xiàn) 17:連接到 RTC 鬧鐘事件。

線(xiàn) 18:連接到 USB 喚醒事件。
STM32GPIO外部中斷的詳細(xì)解析和總結(jié)

2

外部中斷的配置過(guò)程

1.配置觸發(fā)源GPIO口

因?yàn)镚PIO口作為觸發(fā)源使用,所以將GPIO口配置成輸入模式,觸發(fā)模式有以下幾種:

a.GPIO_Mode_AIN ,模擬輸入(ADC模擬輸入,或者低功耗下省電)

b.GPIO_Mode_IN_FLOATING ,浮空輸入

c.GPIO_Mode_IPD ,帶下拉輸入

d.GPIO_Mode_IPU ,帶上拉輸入

GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能時(shí)鐘

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//選擇IO口 PE2

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//設(shè)置成上拉輸入

GPIO_Init(GPIOE, &GPIO_InitStructure);//使用結(jié)構(gòu)體信息進(jìn)行初始化IO口

2.使能AFIO復(fù)用時(shí)鐘功能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

3.將GPIO口與中斷線(xiàn)映射起來(lái)

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

4.中斷線(xiàn)上進(jìn)行中斷初始化

EXTI_InitTypeDef EXTI_InitStructure;//定義初始化結(jié)構(gòu)體

EXTI_InitStructure.EXTI_Line=EXTI_Line2; //中斷線(xiàn)的標(biāo)號(hào) 取值范圍為EXTI_Line0~EXTI_Line15

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式,可選值為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//觸發(fā)方式,可以是下降沿觸發(fā) EXTI_Trigger_Falling,上升沿觸發(fā) EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發(fā)EXTI_Trigger_Rising_Falling

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);//根據(jù)結(jié)構(gòu)體信息進(jìn)行初始化

5.中斷優(yōu)先級(jí)配置

NVIC_InitTypeDef NVIC_InitStructure;//定義結(jié)構(gòu)體

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能外部中斷所在的通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優(yōu)先級(jí) 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優(yōu)先級(jí) 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道

NVIC_Init(&NVIC_InitStructure); //根據(jù)結(jié)構(gòu)體信息進(jìn)行優(yōu)先級(jí)初始化

6.外部中斷服務(wù)函數(shù)的編寫(xiě)

外部中斷函數(shù)分別為:

EXPORT EXTI0_IRQHandler

EXPORT EXTI1_IRQHandler

EXPOR T EXTI2_IRQHandler

EXPORT EXTI3_IRQHandler

EXPORT EXTI4_IRQHandler

EXPORT EXTI9_5_IRQHandler

EXPORT EXTI15_10_IRQHandler

中斷線(xiàn) 0-4 每個(gè)中斷線(xiàn)對(duì)應(yīng)一個(gè)中斷函數(shù),中斷線(xiàn) 5-9 共用中斷函數(shù) ,EXTI9_5_IRQHandler,中斷線(xiàn) 10-15 共用中斷函數(shù) EXTI15_10_IRQHandler。

void EXTI2_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個(gè)線(xiàn)上的中斷是否發(fā)生

{

中斷邏輯…

EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中斷標(biāo)志位

}

}

使用按鍵進(jìn)行外部中斷的時(shí)候,一般都需要進(jìn)行按鍵延時(shí)消抖以及松手檢測(cè)的相關(guān)處理,中斷函數(shù)可以參看以下代碼:

void EXTI2_IRQHandler(void)

{

delay_ms(10);//延時(shí)消抖

if(KEY2==0) //按鍵真的被按下

{

LED0=!LED0;

}

while(KEY2!=0);//等待松手

EXTI_ClearITPendingBit(EXTI_Line2); //清楚中斷標(biāo)志位

}

當(dāng)然,如果你的按鍵是允許長(zhǎng)按功能的,那么就進(jìn)行別的邏輯操作,這里不作研究。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2289

    文章

    11011

    瀏覽量

    362195
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1269

    瀏覽量

    53529

原文標(biāo)題:STM32GPIO外部中斷總結(jié)

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 3人收藏
  • jf_985939831

評(píng)論

相關(guān)推薦
熱點(diǎn)推薦

STM32 GPIO外部中斷設(shè)計(jì)

在之前針對(duì)STM32GPIO相關(guān)API函數(shù)及配置使用進(jìn)行了詳細(xì)的介紹,GPIO作為輸入引腳時(shí),調(diào)用相關(guān)讀信號(hào)引腳函數(shù)接口就可以在程序的循環(huán)中,輪詢(xún)的對(duì)輸入信號(hào)進(jìn)行讀取檢測(cè)操作,除了輪
發(fā)表于 04-14 10:51 ?2575次閱讀
<b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>設(shè)計(jì)

STM32GPIO外部中斷總結(jié)

1STM32中斷分組STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是
發(fā)表于 04-27 18:09

詳細(xì)解析STM32外部中斷

說(shuō)明:本文旨在詳細(xì)解析STM32外部中斷,以實(shí)現(xiàn)按鍵觸發(fā)外部
發(fā)表于 08-13 07:50

STM32 GPIO外部中斷總結(jié)

STM32 GPIO外部中斷總結(jié)一、STM32中斷
發(fā)表于 08-16 07:37

STM32 GPIO外部中斷的設(shè)置

STM32GPIO外部中斷的設(shè)置1.中斷的分組STM32 的每一個(gè)GPIO都能配置成一個(gè)
發(fā)表于 01-13 07:26

stm32f103中斷總結(jié)詳細(xì)

stm32f103中斷總結(jié)詳細(xì)
發(fā)表于 11-24 17:06 ?28次下載
<b class='flag-5'>stm32</b>f103<b class='flag-5'>中斷</b><b class='flag-5'>總結(jié)</b>很<b class='flag-5'>詳細(xì)</b>

stm32外部中斷系列

實(shí)現(xiàn)步驟1.如果串口中斷先配置串口,gpio中斷先配置gpio2.串口中斷組的選擇3.串口外部
發(fā)表于 11-26 12:36 ?2次下載
<b class='flag-5'>stm32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>系列

stm32 GPIO使用總結(jié)

stm32 GPIO使用總結(jié)
發(fā)表于 12-01 11:21 ?8次下載
<b class='flag-5'>stm32</b> <b class='flag-5'>GPIO</b>使用<b class='flag-5'>總結(jié)</b>

STM32CubeMX_環(huán)境搭建_GPIO_外部中斷

STM32CubeMX_環(huán)境搭建_GPIO_外部中斷
發(fā)表于 12-05 14:06 ?3次下載
<b class='flag-5'>STM32</b>CubeMX_環(huán)境搭建_<b class='flag-5'>GPIO</b>_<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

STM32f429外部中斷配置解析基于HAL庫(kù)

STM32f429外部中斷配置解析基于HAL庫(kù)
發(fā)表于 12-16 16:58 ?11次下載
<b class='flag-5'>STM32</b>f429<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>配置<b class='flag-5'>解析</b>基于HAL庫(kù)

STM32基本GPIO操作:按鍵輸入(掃描+外部中斷

STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)本文章向大家介紹STM32基本GPIO操作
發(fā)表于 12-29 19:27 ?13次下載
<b class='flag-5'>STM32</b>基本<b class='flag-5'>GPIO</b>操作:按鍵輸入(掃描+<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>)

使用LL庫(kù)開(kāi)發(fā)STM32GPIO口與外部中斷

文章目錄目的輸出與控制輸入與端口值讀取外部中斷總結(jié)目的GPIO口使用是單片機(jī)開(kāi)發(fā)中最簡(jiǎn)單的一塊,STM32
發(fā)表于 01-13 16:13 ?13次下載
使用LL庫(kù)開(kāi)發(fā)<b class='flag-5'>STM32</b>:<b class='flag-5'>GPIO</b>口與<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

STM32---外部中斷

目錄1.外部中斷描述2.外部中斷框圖總結(jié):經(jīng)過(guò)分析框圖,可以產(chǎn)生軟件中斷和事件
發(fā)表于 01-14 15:25 ?7次下載
<b class='flag-5'>STM32</b>---<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

STM32的IO外部中斷EXTI的使用

一、前言 在之前針對(duì)STM32GPIO相關(guān)API函數(shù)及配置使用進(jìn)行了詳細(xì)的介紹,GPIO作為輸入引腳時(shí),調(diào)用相關(guān)讀信號(hào)引腳函數(shù)接口就可以在程序的循環(huán)中,輪詢(xún)的對(duì)輸入信號(hào)進(jìn)行讀取檢測(cè)操
的頭像 發(fā)表于 06-22 10:21 ?2680次閱讀
<b class='flag-5'>STM32</b>的IO<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>EXTI的使用

STM32如何配置外部中斷?STM32外部中斷配置步驟

STM32如何配置外部中斷STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,
的頭像 發(fā)表于 10-26 17:47 ?4395次閱讀

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品