低电平有效的按键#define KEY1  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10)//读取按键0#define KEY2  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取按键1#define KEY3  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)//读取按键2#define KEY4   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)//读取按键3(WK_UP)#define KEY5   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1)//读取按键3(WK_UP)void KEY_Init(void) //IO初始化{GPIO_InitTypeDef GPIO_InitStructure;/*开启按键端口(PC)的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin= GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13;//KEY0-KEY2;//      GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;GPIO_Init(GPIOC,&GPIO_InitStructure);}void KEY_Scan(u8 mode){       staticu8 key_up=1;//按键按松开标志if(mode)key_up=1;  //支持连按           if((KEY1==0||KEY2==0||KEY3==0||KEY4==0||KEY5==0)){delay_ms(40);//去抖动key_up=0;if(KEY1==0)KEY1_flag=1;if(KEY2==0)KEY2_flag=1;if(KEY3==0)KEY3_flag=1;if(KEY4==0)KEY4_flag=1;if(KEY5==0)KEY5_flag=1;}if((KEY1==1||KEY2==1||KEY3==1||KEY4==1||KEY5==1)){delay_ms(10);//去抖动key_up=0;if(KEY1==1)KEY1_flag=0;if(KEY2==1)KEY2_flag=0;if(KEY3==1)KEY3_flag=0;if(KEY4==1)KEY4_flag=0;if(KEY5==1)KEY5_flag=0;}}按键,弹起有效KEY_Scan函数修改为void KEY_Scan(u8 mode){       staticu8 key_up=1;//按键按松开标志if(mode)key_up=1;  //支持连按           if((KEY1==0||KEY2==0||KEY3==0||KEY4==0||KEY5==0)){delay_ms(10);//去抖动key_up=0;if(KEY1==0){KEY1_flag=1;if(0== KEY1_press_flag){KEY1_Event_exec_flag= 0;KEY1_press_flag= 1;}}if(KEY2==0){KEY2_flag=1;if(0== KEY2_press_flag){KEY2_Event_exec_flag= 0;KEY2_press_flag= 1;}}if(KEY3==0){KEY3_flag=1;if(0== KEY3_press_flag){KEY3_Event_exec_flag= 0;KEY3_press_flag= 1;}}if(KEY4==0){if(0== KEY4_flag){KEY4_flag=1;}if(0== KEY4_press_flag){KEY4_Event_exec_flag= 0;KEY4_press_flag= 1;}}if(KEY5==0)KEY5_flag=1;}if((KEY1==1||KEY2==1||KEY3==1||KEY4==1||KEY5==1)){delay_ms(10);//去抖动key_up=0;if(KEY1==1){KEY1_flag=0;if(KEY1_press_flag == 1){KEY1_press_flag= 0;if(0== KEY1_Event_exec_flag)KEY1_Event_exec_flag= 1;}}if(KEY2==1){KEY2_flag=0;if(KEY2_press_flag== 1){KEY2_press_flag= 0;if(0== KEY2_Event_exec_flag)KEY2_Event_exec_flag= 1;}}if(KEY3==1){KEY3_flag=0;if(KEY3_press_flag== 1){KEY3_press_flag= 0;if(0== KEY3_Event_exec_flag)KEY3_Event_exec_flag= 1;}}if(KEY4==1){if(1== KEY4_flag){                                   KEY4_flag=0;}if(KEY4_press_flag== 1){KEY4_press_flag= 0;if(0== KEY4_Event_exec_flag)KEY4_Event_exec_flag= 1;}}if(KEY5==1)KEY5_flag=0;}}然后,后面响应按键的操作,不再以KEY_flag为标志,而是以KEY3_Event_exec_flag为标志。

STM32按键总结(低电平有效及上升沿有效)相关推荐

  1. 外部中断----高低电平触发,(边沿触发)上升沿触发和下降沿触发区别

    外部中断可以分为电平触发和边缘触发两种,那么这两种中断有什么区别,我们今天讲解下 1什么是中断 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生): CPU暂时中断当前的工作, ...

  2. 高,低电平复位电路原理及加电容的作用

    什么是复位 为什么要加复位? 高电平上电复位 低电平上电复位 高电平按键复位 低电平按键复位 什么是复位 单片机复位电路的作用是:使单片机恢复到起始状态,让单片机的程序从头开始执行,运行时钟处于稳定状 ...

  3. 判断STM32 GPIO输入口的输入状态(高电平或低电平)

    判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE->IDR& GPIO_IDR_IDR2) { 函数体 ...

  4. stm32中空的I/O管脚是高电平还是低电平

    STM32中空的I/O管脚是高电平还是低电平取决于具体情况. 1.IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定. 2.STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高阻. ...

  5. stm32 无线遥控HX1838或8路低电平解码接收模块Hal库代码程序

    一.简介 这是一款新型的超薄38K通用红外遥控器,采用的是NEC编码格式,主要用于车载MP3.足浴盆.灯光设配.数码相框.单片机开发板和学习板等场合.因其是基于无线遥控,因此人们在使用起来显得方便.有 ...

  6. STM32按键控制led四种方法

    文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...

  7. stm32按键输入实验c语言,stm32f103学习笔记(三)按键输入(IO口输入)

    学stm32第三天了,才学到按键输入,这进度也是醉了...谁叫俺c语言基础不行,还没有学过模数电呢.. 开发板上有4个按键:key0,key1,key2和wk_up,分别接在PE4,PE3,PE2和P ...

  8. stm32按键FIFO的实现

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

  9. STM32按键控制LED灯(中断实现)

    文章目录 1- 轮询模式和中断模式 2- 配置管脚为中断模式 3- 添加代码 4- 具体实现原理 5- main()--第一个执行程序? 在一般情况下,我们希望实现按键控制灯的亮和灭,这次学习的是中断 ...

  10. 高低电平触发,(边沿触发)上升沿触发和下降沿触发 中断区别

    外部中断可以分为电平触发和边缘触发两种,那么这两种中断有什么区别.中断基本概念是: CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生): CPU暂时中断当前的工作,转去处理事件 ...

最新文章

  1. haproxy配置文件
  2. EDM营销内容撰写要注意的几个方面
  3. 域名注册商标_科技述说:一起了解网络域名的由来
  4. 基于geopandas的空间数据分析——空间计算篇(下)
  5. 计蒜客挑战难题:整除问题
  6. 烂泥:学习ssh之ssh密钥随身携带
  7. 祖传CMOS走出家门,佳能将在传感器供应圈中决战索尼
  8. 五分钟搞定单片机keil5 运行破解安装教程
  9. 如何解析二维码,获取二维码里的参数供下一个接口使用
  10. Ubiquitous Religions——并查集
  11. 南京航空航天大学计算机考研经验分享,南京航空航天大学计算机考研试题.pdf...
  12. [Java8新特性]Collectors源码阅读-1 toCollections和joining等
  13. 第四章 玩转捕获数据包
  14. 华为鸿蒙开发者公测报名,华为发布鸿蒙2.0手机开发者测试版!华为老手机可申请公测...
  15. STM32F103C8T6模拟IIC控制4针0.96寸OLED显示屏
  16. Halcon感兴趣区域填充特定颜色
  17. shell屏蔽错误和警告输出
  18. python SSL: CERTIFICATE_VERIFY_FAILED certificate has expired 证书错误的几种情况和解决方法
  19. CSR8670/8675 发射(TX SOURCE)一拖二 编码 格式APTX APTXLL APTXHD SBC
  20. 【算法题】一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

热门文章

  1. 工作中的会议纪要模板
  2. 一文探究数据仓库体系(2.7万字建议收藏)
  3. OpenTCS打造移动机器人交通管制系统(五)
  4. inventor 波纹阵列_Inventor装配零部件阵列功能详解
  5. python计算圆周率_用python程序求圆周率到任意位
  6. 使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群
  7. oracle minus 利用率,Oracle Minus 取差集(也可以用来做分页,但效率不高)
  8. cmt obm odm 代工模式oem_OEM、ODM、OBM、OPM概念,作用与区别
  9. TensorFlow ERROR:Resource temporarily unavailable
  10. PHP:A mono-alphabetic cipher 单字母密码加解密算法(附完整源码)