• STM32 一个初始化EXTI的例子


    23 May 2017 » Hardware

    注:STM32F407VGT6 with STM32F4 DSP and standard peripherals library v1.8.0

    外部中断源码

    //中断服务函数
    void EXTI2_IRQHandler(void)
    {
        delay_ms(10);
        if (KEY==0)
        {
            LED=~LED;
        }
        EXTI_ClearITPendingBit(EXTI_Line2);
    }
    
    //中断初始化函数
    void EXTIX_Init(void)
    {
        EXTI_InitTypeDef   EXTI_InitStructure;  //中断初始化结构体定义
        NVIC_InitTypeDef   NVIC_InitStructure;  //中断优先级结构体定义
        
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOE,ENABLE);
        //使能IO口时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
        //使能SYSCFG时钟
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource2);
        //配置GPIO与中断线的映射关系
    
        //中断初始化结构体配置
        EXTI_InitStructure.EXTI_Line=EXTI_Line2;
        //选定为中断线2
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        //配置为中断模式
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
        //配置中断触发方式
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        //使能中断线
        EXTI_Init(&EXTI_InitStructure);
        //初始化外部中断
    
        //中断优先级结构体配置
        NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;
        //选定为中断通道2
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00;
        //配置抢占优先级(主优先级)
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x00;
        //配置响应优先级(从优先级)
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        //使能中断通道
        NVIC_Init(&NVIC_InitStructure);
        //初始化中断优先级
    }
    

    还需在主函数中加入

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    //设置优先级分组
    EXTIX_Init();
    //初始化外部中断
    

    外部中断的一般配置步骤:
    1.使能SYSCFG时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    2.初始化IO口为输入
    GPIO_Init();
    3.设置IO口与中断线的映射关系
    大专栏  STM32 一个初始化EXTI的例子s="highlighter-rouge">SYSCFG_EXTILineConfig();
    4.初始化线上中断,设置触发条件等
    EXTI_Init();
    5.配置中断分组(NVIC),并使能中断
    NVIC_Init();
    6.编写中断服务函数
    EXTIx_IRQHandler();
    7.清除中断标志位
    EXTI_ClearITPendingBit();

  • 相关阅读:
    Vue自定义Table
    Cesium GeometryIntstance 选中改变颜色 和 绘制带箭头的直线
    echart 饼图
    C# 读取json 文件 解析处理并另存
    滚动条到底 监听
    二分总结
    LeetCode 438. 找到字符串中所有字母异位词
    LeetCode 400. 第 N 位数字
    WPF深入浅出代码案例
    设计模式生成器模式
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12267978.html
Copyright © 2020-2023  润新知