<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è) > 嵌入式系統 > 設計應用 > STM32F104VG (一)中斷與外部中斷

STM32F104VG (一)中斷與外部中斷

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
一、基礎知識

1.ARM的中斷優(yōu)先級分硬件優(yōu)先級和軟件優(yōu)先級兩種

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

其中軟件優(yōu)先級又由搶占優(yōu)先級和響應優(yōu)先級組成

2.中斷的優(yōu)先級采用編號小優(yōu)先的原則。

3.一般情況:

1).如果設定了軟件優(yōu)先級,先看軟件優(yōu)先級:

具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷處理過(guò)程中被響應,即中斷嵌套,或者說(shuō)高搶占式優(yōu)先級的中斷可以嵌套低搶占式優(yōu)先級的中斷。

當兩個(gè)中斷源的搶占式優(yōu)先級相同時(shí),這兩個(gè)中斷將沒(méi)有嵌套關(guān)系,當一個(gè)中斷到來(lái)后,如果正在處理另一個(gè)中斷,這個(gè)后到來(lái)的中斷就要等到前一個(gè)中斷處理完之后才能被處理。如果這兩個(gè)中斷同時(shí)到達,則中斷控制器根據他們的響應優(yōu)先級高低來(lái)決定先處理哪一個(gè)。

2).后看硬件優(yōu)先級

如果他們的搶占式優(yōu)先級和響應優(yōu)先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個(gè)。

4. 特殊情況
軟件優(yōu)先級設置對復位、NMI、硬件故障無(wú)效,他們的優(yōu)先級始終比外部中斷
5.軟件優(yōu)先級的分組
中斷優(yōu)先級分組就是把優(yōu)先級寄存器分割,分開(kāi)哪幾位是響應優(yōu)先級,哪幾位是搶占優(yōu)先級。至于怎樣設置分組:每一個(gè)ARM的M4中斷優(yōu)先級設計為可編程的8位,具體到stm32f4就只留給用戶(hù)4位共16級的可編程優(yōu)先級,其中低4位已被占用。也就是說(shuō)stm32f4的優(yōu)先級分組情況采用NVIC_PriorityGroup_x, x=0~4表示,對應如下表格:

[10:8]

分割點(diǎn)

搶占優(yōu)先級位

響應優(yōu)先級位

搶占優(yōu)先級數

響應優(yōu)先級數

0b011(組4)

xxxx

[7:4]

none

16(0~15)

1(0~0)

0b100(組3)

xxx.y

[7:5]

[4]

8

2

0b101(組2)

xx.yy

[7:6]

[5:4]

4(0~3)

4(0~3)

0b110(組1)

x.yyy

[7]

[6:4]

2

8

0b111(組0)

yyyy

none

[7:4]

1

16

二、具體實(shí)例


1.分析:
1).開(kāi)關(guān)沒(méi)有按下去時(shí)候,GPIO為高電平,開(kāi)關(guān)按下去時(shí)候為低電平。
2).對應GPIO為低電平時(shí)候將點(diǎn)亮二極管。
PE12-->EXIT12
PE13-->EXIT13
PE14-->EXIT14
PE15-->EXIT15
在中斷向量表中可以查到EXTIRCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource12);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource13);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource14);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource15);
2)配置并初始化中斷線(xiàn)
/* 配置 EXTI LineXXX */
EXTI_InitStructure.EXTI_Line = EXTI_Line12 | EXTI_Line13 | EXTI_Line14 | EXTI_Line15;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
3)配置并初始化
NVIC_InitTypeDef NVIC_InitStructure;
/* 設置NVIC優(yōu)先級分組為Group2:4個(gè)搶占式優(yōu)先級,4響應式優(yōu)先級 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
/* 中斷優(yōu)先級配置 最低優(yōu)先級 這里一定要分開(kāi)的設置中斷,不能夠合并到一個(gè)里面設置 */
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
2.2中斷處理函數部分
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line12) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line12); /* 清除中斷標志位 */
//do something
}

if(EXTI_GetITStatus(EXTI_Line13) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line13); /* 清除中斷標志位 */
//do something
}
if(EXTI_GetITStatus(EXTI_Line14) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line14); /* 清除中斷標志位 */
//do something
}
if(EXTI_GetITStatus(EXTI_Line15) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line15); /* 清除中斷標志位 */
//do something
}

}



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

評論


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