(STM32F4) External Interrupt

外部中斷(External Interupt) 在MCU中是很常見而且很常用到的基本function,所以就不多做解釋。不過因為每顆MCU的配置都不太一樣所以在此記錄下來。

External Interrupt 配置

 1 void EXIT_GPIO_Config(void)
 2 {
 3     GPIO_InitTypeDef GPIO_Config;
 4     EXTI_InitTypeDef EXTI_Config;
 5     NVIC_InitTypeDef NVIC_Config;
 6 
 7     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
 8     RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
 9 
10     GPIO_Config.GPIO_Mode = GPIO_Mode_IN;
11     GPIO_Config.GPIO_OType = GPIO_OType_PP;
12     GPIO_Config.GPIO_Pin = GPIO_Pin_0;
13     GPIO_Config.GPIO_PuPd = GPIO_PuPd_NOPULL;
14     GPIO_Config.GPIO_Speed = GPIO_Speed_100MHz;
15     GPIO_Init(GPIOA, &GPIO_Config);
16 
17     SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
18 
19     EXTI_Config.EXTI_Line = EXTI_Line0;
20     EXTI_Config.EXTI_Mode = EXTI_Mode_Interrupt;
21     EXTI_Config.EXTI_Trigger = EXTI_Trigger_Rising;
22     EXTI_Config.EXTI_LineCmd = ENABLE;
23     EXTI_Init(&EXTI_Config);
24 
25     NVIC_Config.NVIC_IRQChannel = EXTI0_IRQn;
26     NVIC_Config.NVIC_IRQChannelSubPriority = 0x01;
27     NVIC_Config.NVIC_IRQChannelPreemptionPriority = 0x01;
28     NVIC_Config.NVIC_IRQChannelCmd = ENABLE;
29     NVIC_Init(&NVIC_Config);
30 
31     printf("External interrupt initial finished !!\n");
32 }

中斷向量內的程式碼

1 void EXTI0_IRQHandler(void)
2 {
3     if(EXTI_GetFlagStatus(EXTI_Line0) != RESET)
4     {
5         printf("interrupt test\n");
6         EXTI_ClearITPendingBit(EXTI_Line0);
7     }
8 }

主程式

 1 /* Private variables ---------------------------------------------------------*/
 2 __IO uint32_t status;
 3 
 4 int main(void)
 5 {
 6     LED_Config();
 7     Delay_Init();            /* initialize delay function */
 8     USART_Config();
 9     EXIT_GPIO_Config();
10     printf("STM32F4 External Function test\n");
11 
12     while(1)
13     {
14         status = GPIOA->IDR & GPIO_Pin_0;
15         if(status)
16         GPIOD->ODR |= GPIO_Pin_12;
17         else
18         GPIOD->ODR &= ~GPIO_Pin_12;
19         DelayMs(500);
20     }
21 }

 

posted on 2017-11-21 17:41  OO程式猿  阅读(626)  评论(0编辑  收藏  举报

导航