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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2946|回復: 3
打印 上一主題 下一主題
收起左側

STM32矩陣鍵盤出現問題,無法檢測鍵位,可是邏輯上沒有什么問題啊

[復制鏈接]
跳轉到指定樓層
樓主
ID:136423 發表于 2016-10-24 13:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 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引腳時鐘                          
     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引腳時鐘                          
     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引腳時鐘                          
    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 延時子程序(去抖程序)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 延時子程序(去抖程序)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 延時子程序(去抖程序) 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, 下載次數: 10

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:136423 發表于 2016-10-24 13:26 | 只看該作者
希望大神們能指導指導
回復

使用道具 舉報

板凳
ID:136423 發表于 2016-10-24 14:29 | 只看該作者
原理圖見附件
回復

使用道具 舉報

地板
ID:161929 發表于 2017-7-26 10:57 | 只看該作者
看你的原理圖怎么有些地方有節點有些地方沒有啊
是不是原理圖有問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 81精品国产乱码久久久久久 | 日韩欧美国产一区二区 | 亚洲欧美综合网 | 九九热最新地址 | 欧美国产视频 | 亚洲免费人成在线视频观看 | 日韩在线不卡 | 亚洲成人一区二区 | 国产成人精品999在线观看 | 亚洲成人综合社区 | 亚洲三区在线观看 | 在线小视频 | 在线观看国产wwwa级羞羞视频 | 欧美日韩中文在线 | 成人免费观看男女羞羞视频 | 欧美一级做性受免费大片免费 | 天天天堂 | 欧美日韩中文国产一区发布 | 日日骚av | 国产精品久久久久久福利一牛影视 | 日韩精品一区二区三区在线播放 | 国产做爰 | 一级毛片在线播放 | 欧美成年黄网站色视频 | 日韩精品一区中文字幕 | 色综网| 久99久视频 | 国产一区二区在线视频 | 国产精品自在线 | 99精品一区二区三区 | 久久精品在线 | 日本免费在线 | 人人擦人人 | 伊人在线| 国产线视频精品免费观看视频 | 国产高清不卡 | 久久精品视频亚洲 | 亚洲视频精品 | 亚洲第一免费播放区 | 久久33 | 99亚洲精品 |