stm32按键识别】的更多相关文章

刚写了一个关于stm32单片机的按键识别的程序.目的,同时识别多个按键,并且不浪费cpu的时间. 关于去抖动,以前以为是在按键的时候,手会抖动.通过程序验证,这个确实是误解.这个应该是防止意外干扰.以我的手按键的速度,单次持续时间小于0.2秒钟. 前提:引脚低电平为按键按下.为每个按键设置3个变量,分别是识别过程的计数器keycnt.识别的结果keystat.可以判定的结果keymod(比如按下.释放.单击.双击.长按等). 本例 只有单击一种判断,keymod暂时不用.另外考虑,按键判定后,直…
三.KEY 3.1  初始化 1.相应端口时钟使能 2.配置GPIO为输入模式 3.根据实际电路图 配置浮空输入,不用上下拉 3.2  按键识别 (1)一般按键步骤(延时消抖) 1. 判断相关的管脚是否为有效电平 2. 如果为有效电平,则进行消抖处理,如延时消抖(5~10ms) 3. 再次判断是否为有效电平.如果为有效电平,则确实是按键按下了,而不是干扰. 4. 识别到后做按键处理 5. 等待按键释放 //延时消抖 //返回键值 u8 key_scanf(void) { u8 key=NO_KE…
耳机插拔/线控按键识别流程 耳机插拔/线控按键识别流程 1.文档概述 本文以msm8909平台,android N为例,介绍了通用情况下,耳机插拔的流程步骤,以及对耳机类型的识别逻辑.以方便在项目工作中经常会遇到耳机不被识别,或者识别后不能正常工作等情况,都可以参考此文档检测判断逻辑,确定问题根本,理解底层框架. 2.耳机的类型 从主观来看,耳机分三段耳机和四段耳机,而四段耳机又分为欧标和美标两种.通常,四段耳机被写作headset,而三段耳机写作headphones.具体的区别如下图: 三段耳…
STM8经常使用中断指令 开总中断 _asm("rim"); 禁止中断 _asm("sim"); 进入停机模式 _asm("halt"); 中断返回 _asm("iret"); 等待中断 _asm("wfi"); 软件中断 _asm("trap"); STM8S经常使用中断映射 如使用中断函数时.能够通过在上图中查找相相应的中断向量号,而中断函数的名字能够自己定义 /* BASIC IN…
由于最近时间比较匆忙 已经有很久的时间没有写博客了 这次和大家分享的是STM32的一个按键的小程序 他的优点呢也是和上面一个LED一样就是便于移植 更改管脚方便 虽然都是些小程序 但是我觉得他们就像基础一样 基础打好了 你才能建立更高的大楼 学了1年半的电子 我深有体会 其实我们最难学的是基础 可是我们往往忽视了这些方面 只顾一头钻入 这个算法 那个算法  其实说个最简单的给你一份英文资料和一块芯片你能确保能够驱动 如果你连芯片都驱动不了 会再多的算法有什么意义呢?? 好了不多说 下面给大家分享…
学习目标: 1.理解FIFO的基本概念和设计按键FIFO的意义   2.写出实现按键FIFO的代码 1.设计按键FIFO的优点 要介绍实现按键FIFO的优点,首先要了解FIFO的一些基本概念.FIFO即First In First Out,是一种先进先出的数据缓存方式,例如在超市购物之后我们会提着满满的购物车来到收银台排在结账队伍的最后等待付款,先排队的客户先付款离开,后面排队的只有等待前面付款离开才能进行付款.说白了FIFO就是这样一种先进先出机制,先存入的数据在读取时最先被读取到. 设计按键…
#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…
前言:我们都知道开发板上除了有经典的流水灯之外,还有一个必备的练习硬件--按键(key),下面继续来完成按键的配置. 1.通过查看原理图,找出按键(key)的管脚名字和对应芯片上的I/O口,四个I/O分别为PA0.PE2.PE3和PE4. 2.配置按键I/O口这里要注意的是工作模式要改成输入模式,不是led的输出模式,并且不需要设置输出模式. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //输入模式 3.获取按键的按下和释放的状态 //读取PA0引脚…
抖动时间的长短由按键的机械特性决定,一般为5ms-10ms void key() { static u8 flag = 1; if(flag == 1 && KEY_UP == 1) { delay_ms(10); if(KEY_UP == 1) { flag = 0; led1 = ~led1; } } else if(KEY_UP == 0) { delay_ms(10); if(KEY_UP == 0) { flag = 1; } } }…
//°´¼ü³õʼ»¯º¯Êý 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_InitStruc…