STM32 GPIO输入的经典应用是按键。

先看电路。声明:参考正点原子战舰开发板。

在这里可以看到,KEY_UP按键是高电平有效的,即当按下该按键时,GPIO读到高电平。

KEY0/1/2是低电平有效的,即当按下该按键时,GPIO读到低电平。

而且外部电路都没有上下拉电阻。所以,需要在STM32内部配置上下拉。

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。

下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。

配置程序如下:

void KEY_Init(void) //IO³õʼ»¯
{ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIO_InitStructure);}

应用程序

#define KEY0  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
#define KEY1  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
#define KEY2  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)
#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)

按键的应用还需要注意消抖。

经典消抖示意图:

按键消抖通常处理:当检测到按键有效电平后,延时5~10ms,再次判断电平是否有效。

模拟输入经典应用场景为ADC,在后续笔记中进行讲解。

浮空输入比较特殊。当处于浮空输入状态下,IO的电平状态是不确定的(0~VCC之间),完全由外部输入决定。

通常用于低功耗下省电,即将不需要使用的GPIO全部配置为浮空输入模式。

STM32F1笔记(二)GPIO输入相关推荐

  1. (二)DSP28335基础教程——GPIO输入(矩阵按键扫描)

    0 前言 GPIO输入功能是28335非常重要的部分,可通过外部数字逻辑信号的输入,作为逻辑触发控制的判断条件.比如在电机控制中,通过判断输入管脚的电平状态,实现电机调速.在显示屏人机界面下,也可通过 ...

  2. 学习笔记二.矩阵按键

    #学习笔记二:GPIO的探索与矩阵按键 ##1.在配置cubemx时,对gpio的配置有开漏输出和推挽输出两种方式, ###这里有一篇文章(别人的文章)讲的很详细link戳这里跳转 通俗来讲,推挽输出 ...

  3. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  4. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  5. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  6. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  7. 趣谈网络协议笔记-二(第十七讲)

    趣谈网络协议笔记-二(第十七讲) P2P协议:我下小电影,99%急死你 自勉 逃离舒适区! 正文 一. P2P协议 整个篇章讲的就是这两个协议之间的区别.P2P协议就是迅雷下载数据时所用的协议, 众所 ...

  8. Linux 进阶笔记(二)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  9. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

最新文章

  1. activeMQ - 消息重发策略和DLQ死信队列
  2. QIIME 2用户文档. 9数据导入Importing data(2019.7)
  3. 浏览器用xpath获取一直为空
  4. 《HTML5 Canvas开发详解》——导读
  5. JDK、Spring、Dubbo SPI 原理介绍
  6. css工程化和浏览器兼容性问题
  7. 祖父元素_帮助祖父母建立Skype帐户的UX经验教训
  8. react学习(21)---接口加回调显示
  9. 使用WebService如何实现分布式事务
  10. redis集群的搭建详细教程
  11. 外观模式(三层解耦)
  12. 洛谷P1031 均分纸牌(贪心)
  13. Chapter 1 First Sight——13
  14. 三宝小精灵机器人_三宝小精灵机器人
  15. c/c++语言中常用的math函数
  16. 几何学的公理化:塔尔斯基 pk 希尔伯特,谁能取胜?
  17. Dreamweaver DW中清除代码中多余空行的方法(去除空行)
  18. SCOI2016酱油记
  19. 信号反射原理及其典型应用
  20. 这是我见过最完整的Spring全家桶学习笔记,没有之一!

热门文章

  1. cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)
  2. oracle unused用法,set unused的用法(ORACLE刪除字段)
  3. win7 网络端口怎么设置_教你win7如何设置网络共享文件夹
  4. 前端常见浏览器兼容性问题及解决办法
  5. Android killer软件闪退的解决办法?
  6. 西北大学计算机转专业,西北大学可以转专业吗,西北大学新生转专业政策
  7. qfp封装能够linux,QFP、PQFP、LQFP、TQFP封装形式及PCB详解
  8. 2.2 .this的绑定规则
  9. AngularJS XMLHttpRequest
  10. 关于HTML的面试题-html5/css3篇