美文网首页
二.如何通过按键key打开外部中断2018-05-13

二.如何通过按键key打开外部中断2018-05-13

作者: 想阳 | 来源:发表于2018-05-13 01:10 被阅读0次

二.如何通过按键key打开外部中断

注:自己的Key1对应PE3 LED1对应PB5,我需要按下key1就打开LED1,再按就关闭LED1,以此类推

​ 自己的Key2对应PE4 LED2对应PE5,我需要按下key2就打开LED2,再按就关闭LED2,以此类推

第一步.使得E端口的时钟,并且打开io的功能复用时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//将E端口的时钟打开,方便打开小灯  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打开io的功能复用时钟

第二步.对E端口3,4管脚(Key1,Key2)进行初始化,对B端口管脚5和E端口管脚5(LED1,LED2)进行初始化

//对小灯的B端口的5管脚进行使能 以及对E端口的5管脚进行使能
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//初始B端口的五号引脚
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置时钟是50MHz
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//时钟的输入输出类型    推挽输出模式
    GPIO_Init(GPIOB,&GPIO_InitStructure);
    GPIO_Init(GPIOE,&GPIO_InitStructure);
    
    //对两个按键E端口的3管脚和4管脚进行设置
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置时钟是50MHz
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_Init(GPIOE,&GPIO_InitStructure);

第三步.将PE3的管脚3和4管脚映射到外部中断线3和4

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);

第四步.对外部中断线进行配置,并清除中断线3和4的标志位

EXTI_InitTypeDef EXIT_InitStructure;//定义变量
EXTI_ClearITPendingBit(EXTI_Line3);//清除中断线3的标志位
EXTI_ClearITPendingBit(EXTI_Line4);//清除中断线4的标志位

EXIT_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4;//将外部中断线第五个初始化
EXIT_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断
EXIT_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿中断
EXIT_InitStructure.EXTI_LineCmd=ENABLE;//使能
EXTI_Init(&EXIT_InitStructure);

第五步.对外部中断3和4的优先级进行设置

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
NVIC_InitTypeDef NVIC_InitStructure;

    //2个KEY
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
    
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

第六步.外部中断函数的书写

void EXTI3_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line3) == SET)
    {
        //Delay_ms(5);
        if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) == Bit_RESET)//此时E3是低电位
        {
            if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5) == Bit_RESET)
            {
                    GPIO_SetBits(GPIOB,GPIO_Pin_5);
            }
            else
            {
                GPIO_ResetBits(GPIOB,GPIO_Pin_5);
            }
        }   
    }
    EXTI_ClearITPendingBit(EXTI_Line3);
}

void EXTI4_IRQHandler(void)
{
    //Delay_ms(5);
    if(EXTI_GetITStatus(EXTI_Line4) == SET)
    {
        if(GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_5) == Bit_RESET)
        {
              GPIO_SetBits(GPIOE,GPIO_Pin_5);
        }
        else
        {
            GPIO_ResetBits(GPIOE,GPIO_Pin_5);
        }
         EXTI_ClearITPendingBit(EXTI_Line4);
    }
}

相关文章

  • 二.如何通过按键key打开外部中断2018-05-13

    二.如何通过按键key打开外部中断 注:自己的Key1对应PE3 LED1对应PB5,我需要按下key1就打开...

  • 51单片机实验内容及要求

    第二个实验: 外部中断实验 要求: 1、使用P3.2口连接的独立按键进行外部中断实验,要求每次中断实现D1状态翻...

  • 按键中断跟外部中断的区别

    1:GPIO设置上的区别 GPIO_Init(KEY_PORT,KEY_PINS,GPIO_Mode_In_PU_...

  • subline text 3

    一 、格式化 1、首先通过以下路径打开用户按键绑定文件: Preferences → Key Bindings –...

  • 灵动微MM32F003硬件最小系统 --- GPIO外部中断例程

    本例程通过GPIO外部中断控制LED的电平翻转。每一次按键按下都会产生一个中断,在中断服务子程序中的代码去控制LE...

  • 按键输出方波数码管显示

    题目:所有习题均采用外部中断0下降沿进入外部中断0处理按键;采用定时器定时,全部功能在中断中完成。晶振频率为12M...

  • Arduino基础入门篇13—外部中断

    本篇介绍Arduino外部中断的使用,通过外部中断检测震动开关的触发来控制LED灯亮灭。 1. 中断介绍 我们已经...

  • 按键中断

    看见了EA=1,是不是很熟悉呢?就是8051的核。学习完51单片的同学还挺适合学习这个CC254X,然后可以入门蓝牙。

  • 2017年11月30日学习总结

    今天上午还是继续学习项目中的。按键中断部分,通过按键,进去不同的事件。再通过switch case在不用状态下响应...

  • 2020-02-05

    ESP82266外部中断函数及按键控制LED灯 GPIO 输⼊入输出相关宏 GPIO_OUTPUT_SET(gpi...

网友评论

      本文标题:二.如何通过按键key打开外部中断2018-05-13

      本文链接:https://www.haomeiwen.com/subject/krskdftx.html