zoukankan      html  css  js  c++  java
  • STM32的外部中断配置及使用

    STM32的外部中断配置及使用

    配置1:GPIO;

    配置外部中断为输入模式;

    配置2:EXTI;

    配置外部中断线和触发模式;

    配置3:NVIC;

    配置外部中断源和中断优先级;

    需要注意的是:RCC_APB2Periph_AFIO 时钟必须打开,容易忽略的一点;

     1 void EXTI_PORTC_CONFIG(void)
     2 {
     3         GPIO_InitTypeDef GPIO_InitStructure;
     4         EXTI_InitTypeDef EXTI_InitStructure;
     5         NVIC_InitTypeDef NVIC_InitStructure;
     6 
     7         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
     8 
     9         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    10         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; //内部上拉
    11         GPIO_Init(GPIOC, &GPIO_InitStructure);
    12     
    13         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    14         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; //内部上拉
    15         GPIO_Init(GPIOC, &GPIO_InitStructure);
    16     
    17         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    18         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; //内部上拉
    19         GPIO_Init(GPIOC, &GPIO_InitStructure);
    20 
    21         GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);
    22         GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource3);
    23         GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
    24 
    25         EXTI_InitStructure.EXTI_Line = EXTI_Line2; 
    26         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    27         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    28         EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    29         EXTI_Init(&EXTI_InitStructure);
    30         
    31         EXTI_InitStructure.EXTI_Line = EXTI_Line3; 
    32         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    33         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    34         EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    35         EXTI_Init(&EXTI_InitStructure);
    36         
    37         EXTI_InitStructure.EXTI_Line = EXTI_Line5; 
    38         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    39         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    40         EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    41         EXTI_Init(&EXTI_InitStructure);
    42 
    43         NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
    44         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    45         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    46         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    47         NVIC_Init(&NVIC_InitStructure);
    48         
    49         NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
    50         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    51         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
    52         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    53         NVIC_Init(&NVIC_InitStructure);
    54         
    55         NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
    56         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    57         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
    58         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    59         NVIC_Init(&NVIC_InitStructure);
    60 }
  • 相关阅读:
    最小生成树Prim算法和Kruskal算法(转)
    tarjan有向图的强连通
    匈牙利算法
    字符类数组的常用函数
    三层登录——C#版
    监考风波
    SQL Server 2012 安装——安装 OR 卸载
    SQL Server 2012安装——.net framework 3.5离线安装
    坚定自我 守住寂寞
    浅谈三层
  • 原文地址:https://www.cnblogs.com/achao123456/p/5226954.html
Copyright © 2011-2022 走看看