×
单片机 > 单片机程序设计 > 详情

ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断

发布时间:2020-05-28 发布时间:
|

一 矩阵键盘按键触发外部中断引起蜂鸣器鸣叫原理:


1.1 本实验实现矩阵键盘某一列按键触发外部中断实现蜂鸣器鸣叫。


1.2 实验思路:根据电路图原理,外部中断产生原理。


1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 


二 实验步骤: 

2.1 led.h代码:


 #ifndef  __EXTI_H

 #define __EXTI_H    

 #include "sys.h"

 void EXTIX_Init(void);//外部中断初始化

 #endif


2.2 led.c代码(IO配置):


 #include "exti.h"

 #include "key.h"

 #include "delay.h"

 #include "usart.h"

 #include  "beep.h"

void EXTIX_Init(void)

{


    EXTI_InitTypeDef EXTI_InitStructure;

    NVIC_InitTypeDef NVIC_InitStructure;

    KEY_Init(); //按键端口初始化

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //开启AFIO时钟

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource11);//中断线映射

    EXTI_InitStructure.EXTI_Line=EXTI_Line11;    

    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 = EXTI15_10_IRQn;    //使能按键外部中断通道         

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; //抢占优先级0 

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;   //字优先级0              

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     //使能外部中断通道                   

    NVIC_Init(&NVIC_InitStructure);     //初始化NCIC   


void EXTI15_10_IRQHandler(void)  //外部中断服务程序

{   


    delay_ms(10); 

    if(EXTI_GetITStatus(EXTI_Line11) != RESET)        

    {                

        BEEP=!BEEP; 

    }

    EXTI_ClearITPendingBit(EXTI_Line11); //  消除line10上的中断标志位

}


2.2 main.c代码(实现7*8矩阵键盘第5列按键触发):


#include "exti.h"

#include "led.h"

#include "key.h"

#include "delay.h"

#include "usart.h"

#include "beep.h"

 int main(void)

 {      


    delay_init();                 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  

    uart_init(115200);       

    BEEP_Init();             

    KEY_Init();  

    EXTIX_Init();                    

    while(1)

    {       

        printf("OKrn");   

        delay_ms(1000);   

    }

 }


三 接线测试:


3.1 与板子接线测试效果良好,键盘上第5列按键触发中断产生导致蜂鸣器鸣叫


关键字:STM32  矩阵键盘  按键触发  外部中断 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址