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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3032|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STM32矩陣鍵盤出現(xiàn)問題,無法檢測(cè)鍵位,可是邏輯上沒有什么問題啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:136423 發(fā)表于 2016-10-24 13:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 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;                                        // 按鍵檢測(cè)
     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;                                                                        // 按鍵檢測(cè)
     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;                                // 按鍵檢測(cè)
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                         //推挽輸出
    GPIO_Init(GPIOB, &GPIO_InitStructure);     
}

/**********************************************************
********************* 鍵盤檢測(cè)*****************************
**********************************************************/
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);

  /************************檢測(cè)第一行********************************************/  
        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();
  /************************檢測(cè)第二行******************************************/               
      //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();         
/************************檢測(cè)第三行******************************************/                                               
          //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

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

使用道具 舉報(bào)

沙發(fā)
ID:136423 發(fā)表于 2016-10-24 13:26 | 只看該作者
希望大神們能指導(dǎo)指導(dǎo)
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

地板
ID:161929 發(fā)表于 2017-7-26 10:57 | 只看該作者
看你的原理圖怎么有些地方有節(jié)點(diǎn)有些地方?jīng)]有啊
是不是原理圖有問題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美jizzhd精品欧美巨大免费 | 精久久久 | 日日摸日日碰夜夜爽2015电影 | 欧美日韩在线国产 | 久久国产精品免费视频 | 91在线| 亚洲成年影院 | 午夜视频一区二区 | 色偷偷888欧美精品久久久 | 在线免费国产视频 | 一级在线| 中文字幕99| 亚洲综合色婷婷 | 日本91av视频| 欧美精品在线观看 | 久久成人一区 | 久久精品手机视频 | 久久9999久久 | 欧美日韩在线一区 | 国产成人精品午夜 | 91精品国产欧美一区二区 | 国产成人高清视频 | 美日韩中文字幕 | 久久精品一区二区三区四区 | 国产一区二区欧美 | 精品久久国产老人久久综合 | aⅴ色国产 欧美 | 亚洲精品欧美 | 久久一区二区视频 | 中文字幕av在线 | 亚洲永久 | 成人精品视频 | 日韩欧美在线一区 | 无码一区二区三区视频 | 视频在线观看一区 | 久久国产精品-国产精品 | 精品视频一区二区三区 | 一本一道久久a久久精品蜜桃 | 精久久久 | 欧美一区免费 | 特级黄一级播放 |