<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>

新聞中心

STM32 EXIT

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏

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

這張圖是一條外部中斷線(xiàn)或外部事件線(xiàn)的示意圖,途中信號線(xiàn)上劃有一條斜線(xiàn),旁邊標志19字樣的注釋?zhuān)硎具@樣的線(xiàn)路共有19套,途中的藍色虛線(xiàn)箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進(jìn)入,經(jīng)過(guò)編號2的邊沿檢測電路,通過(guò)編號3的或門(mén)進(jìn)入中斷掛起請求寄存器,最后經(jīng)過(guò)編號4的與門(mén)輸入到NVIC中斷控制器,在這個(gè)通道上游4個(gè)控制選項,外部的信號收件經(jīng)過(guò)邊沿檢測電路,這個(gè)邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶(hù)可以使用這兩個(gè)寄存器控制需要哪一個(gè)邊沿產(chǎn)生中斷,因為選擇上升沿或下降沿是分別受2個(gè)平行的寄存器控制,所以用戶(hù)可以同時(shí)選擇上升沿或是下降沿,而如果只有一個(gè)寄存器控制,那么只能選擇一個(gè)邊沿了,接下來(lái)是編號3的或門(mén),這個(gè)或門(mén)的另一個(gè)輸入時(shí)“軟件中斷/事件寄存器”,從這里可以看出,軟件可以?xún)?yōu)先于外部信號請求一個(gè)中斷或事件,即當“軟件中斷/事件寄存器”的對應位為1時(shí),不管外部信號如何,編號3的或門(mén)都會(huì )輸出有效信號。

一個(gè)中斷或事件請求信號經(jīng)過(guò)編號3的或門(mén)后,進(jìn)入掛起請求寄存器到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說(shuō),掛起請求寄存器中記錄了外部信號的電平變化,外部請求信號最后經(jīng)過(guò)編號4的與門(mén),向NVIC中斷控制器發(fā)出一個(gè)中斷請求,如果中斷屏蔽寄存器的對應位為0,則該請求信號不能傳輸到與門(mén)的另一端,實(shí)現了中斷的屏蔽

途中的紅色箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經(jīng)過(guò)編號3的或門(mén)后,進(jìn)入編號5的郁悶,這個(gè)與門(mén)的作用于編號4的與門(mén)類(lèi)似,用于引入事件屏蔽寄存器的控制;最后脈沖發(fā)生器把一個(gè)跳變的信號轉變位一個(gè)單脈沖,輸出到芯片中的其他功能,

從這張圖中可以看出,從外部激勵信號來(lái)看,中斷和事件是沒(méi)有分別的,只是在芯片內部分開(kāi),一路信號會(huì )向CPU產(chǎn)生中斷請求,另一路信號會(huì )向其他功能模塊發(fā)送脈沖觸發(fā)信號,其他功能模塊如何響應這個(gè)信號,則由對應的模塊自己決定。

在圖上部的APB總線(xiàn)和外設模塊接口,是每一個(gè)功能模塊都有的部分

總結:

中斷請求:當產(chǎn)生中斷的時(shí)候,會(huì )執行對應的中斷處理程序

事件請求:當產(chǎn)生事件的時(shí)候,會(huì )想向其他模塊發(fā)送觸發(fā)信號,對于其他模塊如何處理這個(gè)信號,則由模塊自己決定!

#include"exti.h"

voidEXTI_Config(void)
{
EXTI_GPIO_Config();
EXTI_InitStructure();

}

voidEXTI_GPIO_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);


NVIC_Exti();

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉輸
GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}

voidEXTI_InitStructure(void)
{
EXTI_InitTypeDefEXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line14;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
}

voidNVIC_Exti(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}



/*********************************************************************************
*********************************************************************************/
#include"exti.h"

/*
*函數名:NVIC_Configuration
*描述:配置嵌套向量中斷控制器NVIC
*輸入:無(wú)
*輸出:無(wú)
*調用:內部調用
*/
staticvoidNVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;

/*Configureonebitforpreemptionpriority*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

/*配置P[A|B|C|D|E]0為中斷源*/
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

/*
*函數名:EXTI_PB0_Config
*描述:配置PB0為線(xiàn)中斷口,并設置中斷優(yōu)先級
*輸入:無(wú)
*輸出:無(wú)
*調用:外部調用
*/
voidEXTI_PB0_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
EXTI_InitTypeDefEXTI_InitStructure;

/*configtheextiline(PB0)clockandAFIOclock*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

/*configtheNVIC(PB0)*/
NVIC_Configuration();

/*EXTIlinegpioconfig(PB0)*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//上拉輸入
GPIO_Init(GPIOB,&GPIO_InitStructure);

/*EXTIline(PB0)modeconfig*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line=EXTI_Line0;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿中斷
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
}



/*********************************************************************************
*********************************************************************************/
#include"stm32f10x_it.h"
voidEXTI15_10_Handler(void)
{
if(EXTI_GetITStatus(EXTI_Line14)!=RESET)//確認產(chǎn)生了EXTILine中斷
{

GPIO_ResetBits(GPIOE,GPIO_Pin_3);
EXTI_ClearITPendingBit(EXTI_Line14);//清除中斷標志位
}
}





/*
*注意:中斷服務(wù)程序函數名有兩種命名方法
*EXTI0_IRQHandler
*EXTI9_5_IRQHandler
*
*
*
*
*
*/



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

評論


技術(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>