//°´¼ü³õʼ»¯º¯Êý
void KEY_Init(void) //IO³õʼ»¯
{
     GPIO_InitTypeDef GPIO_InitStructure;
    //³õʼ»¯KEY0-->GPIOA.13,KEY1-->GPIOA.15  ÉÏÀ­ÊäÈë IPU
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜPORTA,PORTEʱÖÓ

    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//PE2~4
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀ­ÊäÈë
     GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE2,3,4

    //³õʼ»¯ WK_UP-->GPIOA.0      ÏÂÀ­ÊäÈë  IPD
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;  //PA0ÉèÖóÉÊäÈ룬ĬÈÏÏÂÀ­
    GPIO_Init(GPIOA, &GPIO_InitStructure);         //³õʼ»¯GPIOA.0

}
u8 KEY_Scan(u8 mode)
{
    ;//°´¼ü°´ËÉ¿ª±êÖ¾
    ;  //Ö§³ÖÁ¬°´
    ||KEY1==||KEY2==||KEY3==))  //°´ÏÂÈ¥µÄ״̬key
    {
        delay_ms();//È¥¶¶¶¯
        key_up = ;
             )return KEY_RIGHT;
        )return KEY_DOWN;
        )return KEY_LEFT;
        )return KEY_UP;
    } &&KEY1==&&KEY2==&&KEY3==)key_up=;
       ;  // ÎÞ°´¼ü°´ÏÂ
}
    )
    {
         t=KEY_Scan();
           if(t)
        {
            switch(t)
            {
                case KEY_UP:    //µÆÈ«Ã𣬷äÃùÆ÷Ïì2Éù          PA.0¿ØÖÆPB.8
                    LED0=;
            LED1=;

                 BEEP = ;
           delay_ms();
           BEEP = ;
           delay_ms();
         BEEP = ;
         delay_ms();
           BEEP = ;
           delay_ms();
                    break;
                  case KEY_LEFT:    //LED0ÉÁÒ»´Î  PE.3¿ØÖÆPE.5
                    LED0=;
                  delay_ms();
                  LED0=;
                    break;
                  case KEY_DOWN:    //¿ØÖÆLED1·­×ª    PE.2¿ØÖÆPB.5
                    LED1=!LED1;
                    break;
                  case KEY_RIGHT:    //ͬʱ¿ØÖÆLED0,LED1·­×ª PE.4
                    LED0=;
                  delay_ms();
                  LED0=;
                    break;
            }
        });
    }
 }

stm32 按键的更多相关文章

  1. stm32按键识别

    刚写了一个关于stm32单片机的按键识别的程序.目的,同时识别多个按键,并且不浪费cpu的时间. 关于去抖动,以前以为是在按键的时候,手会抖动.通过程序验证,这个确实是误解.这个应该是防止意外干扰.以 ...

  2. STM32按键控制程序

    由于最近时间比较匆忙 已经有很久的时间没有写博客了 这次和大家分享的是STM32的一个按键的小程序 他的优点呢也是和上面一个LED一样就是便于移植 更改管脚方便 虽然都是些小程序 但是我觉得他们就像基 ...

  3. stm32按键FIFO的实现

    学习目标: 1.理解FIFO的基本概念和设计按键FIFO的意义   2.写出实现按键FIFO的代码 1.设计按键FIFO的优点 要介绍实现按键FIFO的优点,首先要了解FIFO的一些基本概念.FIFO ...

  4. STM32 按键输入

    #include "stm32f10x.h"#include "key.h" //按键初始化函数void KEY_Init(void) { GPIO_InitT ...

  5. stm32按键配置

    前言:我们都知道开发板上除了有经典的流水灯之外,还有一个必备的练习硬件--按键(key),下面继续来完成按键的配置. 1.通过查看原理图,找出按键(key)的管脚名字和对应芯片上的I/O口,四个I/O ...

  6. stm32 按键操作

    抖动时间的长短由按键的机械特性决定,一般为5ms-10ms void key() { static u8 flag = 1; if(flag == 1 && KEY_UP == 1) ...

  7. STM32按键输入

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

  8. [Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~

    3D相关开发 [direct-X] 1.direct-X最小框架 [OpenGL] 1.环境搭建及最小系统 [OpenGL] 2.企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [ ...

  9. stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

    STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...

随机推荐

  1. 让你分分钟学会Javascript中的闭包

    Javascript中的闭包 前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它 ...

  2. sessionPageState与视图状态存储

    这个配置节甚是简单,在MSDN中的介绍也甚是简单:为 ASP.NET 应用程序配置页的视图状态设置. historySize的作用是设置要存储在页历史记录中的项数. 但是这根本是看不明白他是干嘛的,百 ...

  3. 编辑IL文件 修改DLL文件

    本文章只是技术探讨,学习,技术上的研究而已.请支持正版. 如:KS.Gantt.DLL 为例 使用ILSpy反编译 工具 利用ildasm反编译 KS.Gantt.dll  生成IL中间代码 一般会生 ...

  4. SQL 循环语句 while 介绍 实例

    declare @i int begin insert into test (userid) values(@i) end --------------- while 条件 begin 执行操作 en ...

  5. Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)

    新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...

  6. C++11之for循环的新用法

    C++使用如下方法遍历一个容器: #include "stdafx.h" #include<iostream> #include<vector> int m ...

  7. Java--Jsp内置对象列表

  8. R语言数据处理包dplyr、tidyr笔记

    dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...

  9. AbstractFactoryPattern(抽象工厂)

    /** * 抽象工厂模式 * 分为四部分 * 1.产品接口 * 2.产品实例 * 3.工厂接口(生产同一个产品的不同等级,这里是主要区别) * 4.工厂实例 * 工厂类最好用单例模式,但在这里主要是说 ...

  10. ABP 初探 之 AbpSession 扩展

    Abp的权限管理是基于 Identity,所有的扩展也是基于 claims .claims 有许多默认属性,具体连接 关于 Identity的详细介绍,可以参考园友博客 继承 Microsoft.As ...