零基础入门STM32编程——GPIO(五)
系列教程链接
HAL库编程点灯篇https://blog.csdn.net/oHaoEr/article/details/122999523
一 GPIO简介
1.1 概述
GPIO(通用输入输出端口)即芯片的IO管脚,STM32F103系列中不同产品有不同数量的IO管脚。
下图是其中一个IO管脚的示意图。图中绿色部分即表示芯片的引脚,图中的黄色部分为芯片的钳位保护电路。
1.2 钳位保护电路
钳位电路是指利用二极管正向导通压降相对稳定,且数值较小(有时可近似为零)的特点,来限制IO管脚的电位范围。当该点电压超过VDD+0.7V时,上面的二极管导通;而当该点电压小于VSS-0.7V时,下面的二极管导通。
该电路使得单片机引脚的输入电压限制(钳位)于-0.7V~5.7V之间。
- 当管脚输入电压高于VDD
这里的VDD指的是单片机的供电电压3.6V或者5V。STM32单片机的引脚可以作为输入,接收外界的电压输入。当出现输入电压高于单片机的内部允许的电压时会烧毁单片机,为此ST公司为了保护芯片在内部设计了钳位电路,即在引脚的供电电压和引脚之间添加了一个二极管。
该钳位电路工作原理如下:
由于二极管的导通电压是+0.7V,当输入引脚与VDD间的电压差即Vpin-VDD>0.7V时,二极管导通形成通路,如下图所示。
- 当管脚输入电压低于Vss
这里的Vss一般指接地。STM32单片机的引脚可以作为输入,接收外界的电压输入。当出现输入电压高于单片机的内部允许的电压时会烧毁单片机,为此ST公司为了保护芯片在内部设计了钳位电路,即在引脚的供电电压和引脚之间添加了一个二极管。
该钳位电路工作原理如下:
由于二极管的导通电压是0.7V,当输入引脚与Vss间的电压差即Vss-Vpin>0.7V时,即外界输入负电压信号,二极管导通形成通路,如下图所示。
1.3 GPIO工作模式
STM32F103XX产品单片机的IO引脚工作模式可划分为二类八种。分别是4种输入模式和4种输出模式。
引脚状态 | 工作模式 |
---|---|
输入模式 | 模拟输入 |
浮动输入 | |
上拉输入 | |
下拉输入 | |
输出模式 | 推挽输出 |
开漏输出 | |
复用推挽输出 | |
复用开漏输出 |
二 GPIO输入模式
2.1 模拟输入模式
STM32F103XX工作在模拟输入模式时,输 入链路中斯密斯缓冲器被关断,输出链路的输出控制器也被断开。模拟输入模式下,STM32单片机的IO引脚将外界输入信号直接传输给内置的ADC电路进行信号采样。
2.2 浮空输入模式
STM32F103XX工作在输入模式时,用于输出模式的缓冲器就会被禁用。下图中的施密特触发器可作为波形整形电路,能将模拟信号波形整形为数字电路能够处理的方波波形,而且由于施密特触发器具有滞回特性,所以抗干扰能力较强。
施密特触发器将模拟信号波形整形为数字电路能够处理的方波波形。
浮空输入模式下,上拉电路与下拉电阻均断开,施密特触发器的输入信号完全取决于引脚的电压状态,施密特触发器将模拟信号波形整形方波波形,单片机按照APB2时钟频率对转化的数字信号进行采样存储于Input Data register寄存器中。
2.3 上拉输入模式
单片机配置成上拉模式后,芯片内部的施密特触发器接入,并将一电阻接入VDD与施密特触发器的输入端之间,如下图所示。
单片机配置成上拉模式后,分两种情况分析讨论:
- 当IO引脚没有输入时
由于VDD为芯片供电电 压,此时施密特触发器输入电平为高电平,Input Data register寄存器经采样得到的信号为高电平。
- 当IO引脚接地即输入为低电平时
VDD的电流经上拉电阻,从图中可知,施密特触发器(TTL Schmitt trigger)的输入端与芯片引脚直接相连,当外部芯片引脚接地时,相应地施密特触发器(TTL Schmitt trigger)的输入端为低电平。
经上述分析可知,该输入模式可用于按键检测应用,即芯片引脚与按键相连接,按键此时接地,可输入低电平。
2.4 下拉输入模式
单片机配置成上拉模式后,芯片内部的施密特触发器接入,并将一电阻接入VSS与施密特触发器的输入端之间,如下图所示。
单片机配置成下拉模式后,分两种情况分析讨论:
- 当IO引脚没有输入时
由于Vss配置为地,此时施密特触发器输入电平为低电平,Input Data register寄存器经采样得到的信号为低电平。
- 当IO引脚输入为高电平时
从图中可知,施密特触发器(TTL Schmitt trigger)的输入端与芯片引脚直接相连,当外部芯片引脚接3V高电平时,相应施密特触发器(TTL Schmitt trigger)的输入端为高电平。
经上述分析可知,该输入模式可用于按键接高电平时的检测应用。
2.5 复用输入
STM32F103XX在使用片上外设如串口通信等,其信号流入下图所示。信号经芯片引脚进入斯密斯触发器整形后,直接流向对应的内部外设。
三 GPIO输出模式
3.1 推挽输出模式
单片机处于输出模式时,打开输出缓冲,同时输入模式中的斯密斯触发器也同时被激活。
单片机配置成推挽输出模式,当 Output Data register 的值为0时,N-MOS 导通,输出低电平。当 Output Data register 的值为1时,P-MOS 导通,输出高电平。
该模式可以输出0或1。
3.2 开漏输出模式
单片机配置成开漏模式时,电路原理图如下所示,此时需要在芯片引脚处外接工作电压5V作为上拉电压,当 Output Data register 的值为0时,N-MOS导通,输出0;当 Output Data register 的值为1时,芯片引脚为高阻态。
- 开漏输出特点:
1)开漏输出的这一特性可以实现"线与"功能,多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。
2)用户可以根据项目需要设计不同的上拉电阻,调整上拉电压,调整输出电流增强芯片的驱动能力。
3.3 复用开漏输出模式
如下图所示,单片机的IO引脚供内核感知外界的电压,此时功能较为单一;片上集成的外设可通过IO引脚复用功能与IO引脚连接获取外界输入,再将处理后的数据交于内核处理。
单片机内部集成了诸如USART、CAN、SPI等外设, 这些外设需要借用单片机的对外引脚,这一用法称为单片机引脚的复用功能,同一个引脚既可以单片机使用也可给片上外设使用。
单片机配置成复用模式时,此时的输入信号来自片上外设,同时输入线路中的斯密斯触发器也被激活,而输入链路中的上拉和下拉电阻禁用。
和3.1节、3.2节一样,在开漏模式下,单片机会读取 Input Data register的值获取IO引脚的状态;在推挽模式下,单片机会读取 Output Data register的值获取最后一次输出的值。
3.4 复用推挽输出模式
单片机内部集成了诸如USART、CAN、SPI等外设, 这些外设需要借用单片机的对外引脚,这一用法称为单片机引脚的复用功能,同一个引脚既可以单片机使用也可给片上外设使用。
在推挽模式下,单片机会读取 Output Data register的值获取最后一次输出的值。
使用单片机中的USART时,芯片引脚可以配置成复用推挽输出模式,见下表。
四 总结
经过上面学习可知,单片机的IO引脚可配置成二类八种模式,输入状态对应4种模式;输出状态下对应4种模式。具体应用中应当如何选取正确的配置呢?此时取决于具体应用情况,例如对于串口通信而言,当单片机的IO引脚作为USART的Tx(即发送引脚)时,此时该引脚应配置为复用推挽输出模式;而当单片机的IO引脚作为USART的Rx(即接收引脚)时,此时该引脚应配置为浮空输入或者上拉输入。
零基础入门STM32编程——GPIO(五)相关推荐
- 零基础入门STM32编程(三)
前情回顾 通过前面两篇文章的学习,我们已经对STM32有了一定的了解,知道了STM32单片机的基本分类和不同产品间的特点等知识,今天起围绕STM32F103xx继续深入浅出地学习单片机编程. 一.总线 ...
- 零基础入门STM32编程(二)
前情回顾 上篇文章初步认识了STM32,了解了STM32的分类及型号命名规则,本篇内容继续STM32串口编程入门学习. 一 走进STM32 STM32的单片机分为四类,主流单片机又分为五种,四类介绍参 ...
- 零基础入门STM32编程(七)——定时器篇(HAL)
前情回顾 上一篇讲解了HAL库函数点灯,初步学习了如何使用CUBE MX创建工程文件,以及文末送出了获取HAL库函数API手册方法的小福利,本篇将继续学习HAL库函数中的定时器API使用方法. 一 初 ...
- 一篇文章让你从JAVA零基础入门`OOP`编程12.20
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(QQ_3336392096.png)] 一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后, ...
- 一期完结《一篇文章让你从JAVA零基础入门`OOP`编程》12.21
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(QQ_3336392096.jpg)] 一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后, ...
- python编程零基础-如何零基础入门Python编程?
Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...
- 一篇文章让你从JAVA零基础入门`OOP`编程12.19
一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后,整理的文章,文中对知识点的解释仅为个人理解. 配套PPT,站点源码,等学习资料 一.预科 1.1 JAVA 介 ...
- 零基础入门转录组分析——第五章(表达定量)
零基础入门转录组分析--第五章(表达定量) 目录 零基础入门转录组分析--第五章(表达定量) 1. 序列比对结果的复查 2. 表达定量 3. 提取有效信息 4. 合并多个样本定量结果 5. 进一步修改 ...
- 零基础入门深度学习的五篇经典教程
零基础入门深度学习>系列文章旨在讲帮助爱编程的你从零基础达到入门级水平.零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章.虽然文中会有很多公式你也许看不懂, ...
最新文章
- 搞java不细心_Java 2 (基础总结)
- 零基础入门图像语义分割必备概念整理,复制文件内容到Word观看效果更佳
- 第九节、人脸检测之Haar分类器
- matlab中用数据拟合圆心,拟合圆并求圆心(matlab)
- python生成验证码的程序_Python基础篇生成4位随机验证码
- R-Sys.time计算程序运行时间
- 查理·芒格的合伙人李录:价值投资在中国到底适不适用?
- iPad mini Retina越狱小结【2014年02月06日 - 初稿】
- 怎么用软件设计班旗_设计制作:班旗设计
- java多线程厨师做饼,Java多线程之厨师与食客问题
- vivado时序分析 实例
- 【数学】对向量的求导和Jacobian矩阵的几何意义与Hessian矩阵
- HyperAttentionDTI:基于注意机制的序列深度学习改进药物-蛋白质相互作用预测
- Peregrine半导体推出DOCSIS 3.1标准RF开关IC
- 在java中的正则表达式基础
- 散户一般持股多少天?
- Notepad++统计文本字数
- 神马笔记 版本2.11.0——歌词笔记
- 腾讯云直播回调处理方式和流程
- 网站无法用localhost打开,修复localhost一切常见错误,一次性去除病根
热门文章
- Html5 什么是语义化标签? 常见的语义化标签有哪些?
- 传奇脚本变量,命令详解
- Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.
- 极值点坐标C语言,C语言——打印极值点下标
- 嵌入式GUI QT之注意事项
- 使用nginx搭建Discuz X3.4论坛的QQ互联登录失败问题
- 一通百通,带你一次性全理解Spring 中的Template
- B站韩顺平java学习笔记(二十三)-- MYSQL基础篇 章节
- 测试你潜在是天使还是魔鬼
- PCB对点之Mark点检测