STM32——外部中斷EXIT實現


外部中斷實現步驟:

一、初始化,包括:1.AFIO時鍾中斷和GPIO時鍾使能;

                         2.GPIO初始化

                         3.設置EXTI線

                         4.中斷向量初始化

二、中斷服務函數

 

采用PB9作為外部中斷源,具體實現程序如下:

一、初始化

 1 void EXTI_PB9_Init(void)
 2 
 3 {
 4 
 5   GPIO_InitTypeDef GPIO_InitStructure;
 6 
 7   NVIC_InitTypeDef NVIC_InitStructure;
 8 
 9   EXTI_InitTypeDef EXTI_InitStructure;
10 
11   //1.使能GPIO和AFIO時鍾,值得注意的是,當使用外部中斷的時候必須使能AFIO時鍾。
12 
13   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
14 
15   //2.GPIO初始化
16 
17   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
18 
19   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空輸入
20 
21   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO速度為50MHz
22 
23   GPIO_Init(GPIOB,&GPIO_InitStructure);  
24 
25   //3.設置EXTI線
26 
27   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);  //將EXIT線9連接到PB9
28 
29   EXTI_InitStructure.EXTI_Line = EXTI_Line9;
30 
31   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
32 
33   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;  //上升下降沿觸發
34 
35   EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能中斷線
36 
37   EXTI_Init(&EXTI_InitStructure);//初始化中斷
38 
39   //4.中斷向量
40 
41   NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
42 
43   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
44 
45   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
46 
47   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
48 
49   NVIC_Init(&NVIC_InitStructure);
50 
51 }

 

二、中斷服務函數

 1 void EXTI9_5_IRQHandler(void)
 2 
 3 {
 4 
 5   if(EXTI_GetITStatus(EXTI_Line9) != RESET)  //EXTI9產生了中斷
 6 
 7   {
 8 
 9     。。。。。。。。。。//中斷處理,自行腦補~~~~
10 
11   }
12 
13   EXTI_ClearITPendingBit(EXTI_Line9);//清除中斷
14 
15 }

注意:

1.外部中斷5~外部中斷9都是使用同一個中斷函數EXTI9_5_IRQHandler ,若想同時使用,需要在中斷函數中區分不同的中斷線,如:

if(EXTI_GetITStatus(EXTI_Line9) != RESET)  //EXTI9產生了中斷
2.外部中斷線和管腳號是一一對應的,如:
EXTI1 ——> Pin1;
EXTI2 ——> Pin2;
EXTI3 ——> Pin3;
EXTI4 ——> Pin4;
。。。
而不是隨意映射的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM