<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32 外部中斷簡(jiǎn)介

STM32 外部中斷簡(jiǎn)介

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
STM32IO口中斷的一些基礎概念。STM32的每個(gè)IO都可以作為外部中斷的中斷輸入口,這點(diǎn)也是STM32的強大之處。STM32F103的中斷控制器支持19個(gè)外部中斷/事件請求。每個(gè)中斷設有狀態(tài)位,每個(gè)中斷/事件都有獨立的觸發(fā)和屏蔽設置。STM32F103的19個(gè)外部中斷為:

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

本文引用地址:http://dyxdggzs.com/article/201611/318698.htm

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

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

線(xiàn)18:連接到USB喚醒事件。

在庫函數中,配置GPIO與中斷線(xiàn)的映射關(guān)系的函數GPIO_EXTILineConfig()來(lái)實(shí)現的:

voidGPIO_EXTILineConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource)

該函數將GPIO端口與中斷線(xiàn)映射起來(lái),使用范例是:

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

將中斷線(xiàn)2與GPIOE映射起來(lái),那么很顯然是GPIOE.2與EXTI2中斷線(xiàn)連接了。設置好中斷線(xiàn)映射之后,那么到底來(lái)自這個(gè)IO口的中斷是通過(guò)什么方式觸發(fā)的呢?接下來(lái)我們就要設置該中斷線(xiàn)上中斷的初始化參數了。

中斷線(xiàn)上中斷的初始化是通過(guò)函數EXTI_Init()實(shí)現的。EXTI_Init()函數的定義是:

voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct);

下面我們用一個(gè)使用范例來(lái)說(shuō)明這個(gè)函數的使用:

點(diǎn)擊(此處)折疊或打開(kāi)

  1.   EXTI_InitTypeDef EXTI_InitStructure;
  2.   EXTI_InitStructure.EXTI_Line=EXTI_Line4;//中斷線(xiàn)的標號 取值范圍為EXTI_Line0~EXTI_Line15
  3.   EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//中斷模式,可選值為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。
  4.   EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//觸發(fā)方式,可以是下降沿觸發(fā) EXTI_Trigger_Falling,上升沿觸發(fā) EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發(fā)EXTI_Trigger_Rising_Falling
  5.   EXTI_InitStructure.EXTI_LineCmd=ENABLE;
  6. EXTI_Init(&EXTI_InitStructure);

既然是外部中斷,涉及到中斷我們當然還要設置NVIC中斷優(yōu)先級。

點(diǎn)擊(此處)折疊或打開(kāi)

  1.   NVIC_InitTypeDef NVIC_InitStructure;
  2.   NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;//使能按鍵外部中斷通道
  3.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;//搶占優(yōu)先級 2,
  4.   NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;//子優(yōu)先級 2
  5.   NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能外部中斷通道
  6.   NVIC_Init(&NVIC_InitStructure);

配置完中斷優(yōu)先級之后,接著(zhù)我們要做的就是編寫(xiě)中斷服務(wù)函數。中斷服務(wù)函數的名字是在MDK中事先有定義的。這里需要說(shuō)明一下,STM32的IO口外部中斷函數只有6個(gè),分別為:

EXPORTEXTI0_IRQHandler

EXPORTEXTI1_IRQHandler

EXPORTEXTI2_IRQHandler

EXPORTEXTI3_IRQHandler

EXPORTEXTI4_IRQHandler

EXPORTEXTI9_5_IRQHandler

EXPORTEXTI15_10_IRQHandler

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

在編寫(xiě)中斷服務(wù)函數的時(shí)候會(huì )經(jīng)常使用到兩個(gè)函數,

第一個(gè)函數是判斷某個(gè)中斷線(xiàn)上的中斷是否發(fā)生(標志位是否置位):

ITStatusEXTI_GetITStatus(uint32_tEXTI_Line);

這個(gè)函數一般使用在中斷服務(wù)函數的開(kāi)頭判斷中斷是否發(fā)生。另一個(gè)函數是清除某個(gè)中斷線(xiàn)上的中斷標志位:

voidEXTI_ClearITPendingBit(uint32_tEXTI_Line);

這個(gè)函數一般應用在中斷服務(wù)函數結束之前,清除中斷標志位。

常用的中斷服務(wù)函數格式為:

voidEXTI2_IRQHandler(void)

{

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

{

中斷邏輯…

EXTI_ClearITPendingBit(EXTI_Line3);//清除LINE上的中斷標志位

}

}

使用IO口外部中斷的一般步驟:

1)初始化IO口為輸入。

2)開(kāi)啟IO口復用時(shí)鐘,設置IO口與中斷線(xiàn)的映射關(guān)系。

3)初始化線(xiàn)上中斷,設置觸發(fā)條件等。

4)配置中斷分組(NVIC),并使能中斷。

5)編寫(xiě)中斷服務(wù)函數。



關(guān)鍵詞: stm32外部中

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>