ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫

              基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫

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

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("OK\r\n");   
        delay_ms(1000);   
    }
 }

三 接线测试:

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

你可能感兴趣的:(嵌入式)