#include "stm32f10x.h"
#include "key.h"

//按键初始化函数
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

#ifndef __KEY_H
#define __KEY_H     

#define KEY0  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)//读取按键0
#define KEY1  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)//读取按键1
#define KEY2  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)//读取按键2
#define KEY3  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)//读取按键3

#define KEY4  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)//读取按键0
#define KEY5  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)//读取按键1
#define KEY6  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)//读取按键2
#define KEY7  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)//读取按键3
#define KEY8  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)//读取按键3

void KEY_Init(void);//IO初始化

#endif
#include "stm32f10x.h"
#include <stdio.h>
#include "sys.h"
#include "delay.h"
#include "oled.h"
#include "24l01.h"
#include "key.h"

/* OLED
SCL-D0--PC15
SDA-D1--PC14
RST---PC13
DC---PB4*/

/*
        2401--SPI1
        MISO-PA6 SCK-PA5     CE-PB3
        IRQ-PA3  MOSI-PA7 CSN-PA2
*/

// c8t6

 u8 tmp_buf[] ;

int main(void)
{
    Stm32_Clock_Init();//系统时钟设置为外部晶振,9倍频
    delay_init();//系统SysTick初始化
    JTAG_Set(JTAG_SWD_DISABLE);     //=====关闭JTAG接口
    JTAG_Set(SWD_ENABLE);           //=====打开SWD接口 可以利用主板的SWD接口调试
  OLED_Init();
    KEY_Init();
    //NRF24L01_Init();                //=====NRF24L01无线模块初始化
 // NRF24L01_FindMyself();          //=====NRF24L01无线模块检查 检测不到就停在这边自检闪灯
     //tmp_buf[0]= 1 ;
    )
    { 

              // TX_Mode(); 

                 //     OLED_ShowNumber(0,30,tmp_buf[0],5,12);
               //    NRF24L01_TxPacket(tmp_buf);    

     )
         {
             delay_ms();
             OLED_ShowString(,,"Key0");

         }
         )
         {
              delay_ms();
              OLED_ShowString(,,"Key1");
         }
         )
         {
              delay_ms();
              OLED_ShowString(,,"Key2");
         }
         )
         {
              delay_ms();
              OLED_ShowString(,,"Key3");
         }     

          )
         {
              delay_ms();
              OLED_ShowString(,,"Key4");
         }     

          )
         {
              delay_ms();
              OLED_ShowString(,,"Key5");
         }     

       )
         {
              delay_ms();
              OLED_ShowString(,,"Key6");
         }     

          )
         {
              delay_ms();
              OLED_ShowString(,,"Key7");
         }     

          )
         {
              delay_ms();
              OLED_ShowString(,,"Key8");
         }     

         OLED_Refresh_Gram();
  }

    }

STM32 按键输入的更多相关文章

  1. STM32按键输入

    下面3个接上拉电阻 WK_UP接上拉电阻 因为用到了PA,PC,PH所以要使能3个模块 STATIC静态变量只会初始化一次 每次调用flag++,不会再初始化为0:起记忆作用. 最关键的是头 件不要忘 ...

  2. STM32基本GPIO操作:按键输入(扫描+外部中断)

    (涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注 ...

  3. STM32之输入捕获以及小小应用(库)

    五一之际,先祝大家五一快乐.其实快乐很简单,工作的人有假放,学习的人也有假放,像我,有假放才有更多的时间学自己想学的东西.51假期学51,可惜没有32假期呀.好了..言归正传,大家听过吸星大法吧..在 ...

  4. linux输入子系统(input subsystem)之按键输入和LED控制

    实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c #include <linux/module.h> #include &l ...

  5. Python脚本控制的WebDriver 常用操作 <十二> send_keys模拟按键输入

    下面将使用WebDriver中的send_keys来模拟键盘按键输入 测试用例场景 send_keys方法可以模拟一些组合键操作: ctrl+a ctrl+c ctrl+v 等. 另外有时候我们需要在 ...

  6. ADB——模拟手机按键输入

    基本命令 adb 模拟按键输入的命令主要通过 input 进行 Usage: input [<source>] <command> [<arg>...] The s ...

  7. adb命令模拟按键输入keycode

    adb命令模拟按键输入keycode 2017年05月18日 14:57:32 阅读数:1883 例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent ...

  8. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

  9. adb shell命令模拟按键/输入input使用keycode 列表详解

    在adb shell里有一个非常使用的命令,模拟按键输入,这里首先不要理解为是键盘的模拟按键,下面命令的使用和键值做一个详解. input命令格式 adb shell input keyevent & ...

随机推荐

  1. iOS--碎片知识锦集

    知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size;     // ...

  2. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  3. [原创]MYSQL中利用外键实现级联删除和更新

    MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定 ...

  4. Android开发之Activity的生命周期以及加载模式

    本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...

  5. 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  6. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  7. 搭建公司内部的NuGet Server

    随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能. 项目多,交叉引用多,如果要是有一个DLL更新,那就 ...

  8. JVM 架构解读

    每个Java开发人员都知道字节码由JRE(Java运行时环境)执行.但许多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码,解释代码并执行它.作为开发人员,我们应 ...

  9. Scrapy开发指南

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. Scrapy基于事件驱动网络框架 Twis ...

  10. 五个典型的 JavaScript 面试题

    阅读原文 在IT界,需要大量的 JavaScript 开发者.如果你的能力能够胜任这一角色,那么你将获得许多更换工作和提高薪水的机会.但是在你被公司录取之前,你需要展现你的技术实力,以便通过面试环节. ...