久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: STM32矩陣鍵盤出現(xiàn)問題,無法檢測鍵位,可是邏輯上沒有什么問題啊 [打印本頁]

作者: lliuxin88    時(shí)間: 2016-10-24 13:25
標(biāo)題: STM32矩陣鍵盤出現(xiàn)問題,無法檢測鍵位,可是邏輯上沒有什么問題啊
本帖最后由 lliuxin88 于 2016-10-24 14:29 編輯

#include "stm32f10x.h"
#include "keyscan.h"
#include"stm32f10x_rcc.h"
#include"stm32f10x_gpio.h"
#include"systick.h"
/**********************************************************
****************** 配置GPIO輸出口**************************
**********************************************************/
void keyscan_OUTInit(void)
{
         GPIO_InitTypeDef GPIO_InitStructure;                                                                                          //通用接口配置               
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD ,ENABLE);                                                          //初始化PD引腳時(shí)鐘                          
     GPIO_InitStructure.GPIO_Pin = JPA|JPB|JPC;                                        // 按鍵檢測
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                 
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                                //推挽輸出
     GPIO_Init(GPIOD, &GPIO_InitStructure);     
}
                                                                                                

/**********************************************************
****************** 配置GPIO輸入口**************************
**********************************************************/
void keyscan_INInit(void)
{
     GPIO_InitTypeDef GPIO_InitStructure;                                                                                                  //通用接口配置               
         //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD ,ENABLE);                                                                  //初始化PD引腳時(shí)鐘                          
     GPIO_InitStructure.GPIO_Pin = JPD|JPE|JPF|JPG;                                                                        // 按鍵檢測
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                 
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                                                                                 //上拉輸入
     GPIO_Init(GPIOD, &GPIO_InitStructure);

}
/**********************************************************
****************** 配置LED GPIO輸出口*********************
**********************************************************/
void LED_GPIOInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;                                                                                          //通用接口配置               
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);                                                          //初始化PB引腳時(shí)鐘                          
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;                                // 按鍵檢測
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                         //推挽輸出
    GPIO_Init(GPIOB, &GPIO_InitStructure);     
}

/**********************************************************
********************* 鍵盤檢測*****************************
**********************************************************/
void key_scan(void)
{
  uint8_t KEY=0;
  keyscan_INInit();
  keyscan_OUTInit();
  LED_GPIOInit();
  SysTick_Init();                                

   GPIO_SetBits(GPIOB, GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

  /************************檢測第一行********************************************/  
        GPIO_Write(GPIOD,GPIOD->ODR|0xfeff);                      //置低JPA
    if((GPIOD->IDR&0x7800)!=0x7800)
        {
          Delay_ms(20);                                                //sysTick 延時(shí)子程序(去抖程序)20ms   
          if((GPIOD->IDR&0x7800)!=0x7800)                     
          {
                  //KEY=0;
            switch (GPIOD->IDR&0x7800){                        
                case 0x7000:
                      KEY=3;
                          break;
             case 0x6800:
                      KEY=6;
                          break;
                case 0x5800:
                      KEY=9;
                          break;
                case 0x3800:
                      KEY='#';
                          break;
              default:
                      break;
                          }
         while((GPIOD->IDR&0x7800)!=0x7800){                          //等待鍵盤釋放   
             GPIOD->IDR&=0x7800;
                         }
          if(KEY==3)
           GPIO_ResetBits(GPIOB, GPIO_Pin_7);        //燈亮
                }  
            }
      keyscan_INInit();
      keyscan_OUTInit();
      LED_GPIOInit();
  /************************檢測第二行******************************************/               
      //Delay_ms(2);                                                
   GPIO_Write(GPIOD,GPIOD->ODR|0xfdff);                                //置低JPB
    if((GPIOD->IDR&0x7800)!=0x7800)
        {
                  Delay_ms(20);                                                             //sysTick 延時(shí)子程序(去抖程序)20ms   
          if((GPIOD->IDR&0x7800)!=0x7800)
          {
             //KEY=0;
            switch (GPIOD->IDR&0x7800){
                case 0x7000:
                      KEY=2;
                          break;
            case 0x6800:
                      KEY=5;
                          break;
                case 0x5800:
                      KEY=8;
                          break;
                case 0x3800:
                      KEY=0;
                          break;
            default:
                      break;
                          }
          while((GPIOD->IDR&0x7800)!=0x780000){                                         //等待鍵盤釋放
                         GPIOD->IDR&=0x7800;
          }
           if(KEY==2)
           GPIO_ResetBits(GPIOB, GPIO_Pin_6);        //燈亮                              
          }
            }
    keyscan_INInit();
    keyscan_OUTInit();
    LED_GPIOInit();         
/************************檢測第三行******************************************/                                               
          //Delay_ms(2);
   GPIO_Write(GPIOD,GPIOD->ODR|0xfbff);                                           ////置低JPC
    if((GPIOD->IDR&0x7800)!=0x7800)
        {
                  Delay_ms(20);                     //sysTick 延時(shí)子程序(去抖程序) 20ms   
          if((GPIOD->IDR&0x7800)!=0x7800)
          {         
              //KEY=0;                                                        
            switch (GPIOD->IDR&0x7800)
                {
                case 0x7000:
                      KEY=1;
                          break;
            case 0x6800:
                      KEY=4;
                          break;
                case 0x5800:
                      KEY=7;
                          break;
                case 0x3800:
                      KEY='*';
                          break;
                default:
                      break;
                          }                    
                 while(GPIOD->IDR&0x7800!=0x7800){                                 //等待鍵盤釋放
                       GPIOD->IDR&=0x7800;
                 }
                         if(KEY==1)
           GPIO_ResetBits(GPIOB, GPIO_Pin_5);        //燈亮        
                }   
          }
        }                              

JP.zip

38.11 KB, 下載次數(shù): 10


作者: lliuxin88    時(shí)間: 2016-10-24 13:26
希望大神們能指導(dǎo)指導(dǎo)

作者: lliuxin88    時(shí)間: 2016-10-24 14:29
原理圖見附件
作者: paomall    時(shí)間: 2017-7-26 10:57
看你的原理圖怎么有些地方有節(jié)點(diǎn)有些地方?jīng)]有啊
是不是原理圖有問題





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品欧美一区二区三区久久久 | 亚洲爱爱网 | 日韩欧美大片 | 一区二区精品视频 | 国产激情视频在线 | 国产亚洲欧美日韩高清 | 国产三级久久 | 一级片av| 日韩特黄| 亚洲乱色 | 国产视频福利 | 婷婷狠狠爱 | 国产欧美日韩在线 | 青青草久草 | 亚洲成人精品 | 国产精品99精品久久免费 | 午夜精品久久久久久久99黑人 | 天堂中文在线视频 | 免费成人结看片 | xxxxx黄色| 欧美人与性动交α欧美精品 | 免费网站观看www在线观 | 久久九| 欧美午夜精品久久久久免费视 | 欧美在线综合 | 欧美日韩一区二区三区视频 | 亚洲成a人片 | 国产中文字幕一区二区 | 中文字幕有码在线 | 伊人久久精品视频 | 午夜两性 | 成人免费在线观看网站 | 玖草视频 | 国产成人在线观看免费网站 | av免费观看网址 | 亚洲精品免费在线 | 999在线视频 | 中文字字幕 | 日本视频免费观看 | 欧美在线观看一区 | 日韩8x8x|