作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!!
个人主页:@rivencode的个人主页
系列专栏:玩转STM32
保持学习、保持热爱、认真分享、一起进步!!!
GPIO (general purpose input output)是通用输入输出端口的简称,简单来说就是软件可控制的引脚
,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
1.引脚全是GPIO嘛?
答案是否定的,不是所有引脚都是GPIO
STM32F103VET6引脚图
STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOE 共 5 组 GPIO,例如GPIOA(PA0~PA15 16个引脚)芯片一共 100 个引脚,其中GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能
这100个引脚中除了GPIO还有特殊功能的引脚,例如复位引脚,电源引脚…
2.GPIO的输入输出模式
GPIO可配置8种模式
芯片的引脚电平0~3.3V,部分引脚可以5V,引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入
1.当引脚电压高于VDD 时,上方的二极管导通
防止过高电压进入芯片内部烧坏芯片
2.当引脚电压低于 VSS 时,下方的二极管导通
防止电压过低,从芯片内部汲取电流
在输入模式时,施密特触发器打开,输出被禁止,可通过输入数据寄存器 GPIOx_IDR读取 I/O 状态。
由于电阻阻值很大这里的上拉下拉输入都是弱上拉 弱下拉,为了对外部输入产生很大的影响
上拉输入:给一个默认的高电平也就是说当没有外部输入时默认输入高电平
下拉输入:给一个默认的低电平也就是说当没有外部输入时默认输入低电平
浮空输入:如果输入引脚啥都不接,此时输入电平极易受外界的干扰导致输入电平不确定,完全由外部的输入决定。
这模式主要为片上外设ADC而配置,从外部读取模拟信号
模拟信号:测试信号未经过采样前,均是时间和幅值均是连续的信号称为模拟信号,例如连续变化的电压,电流,温度等等。
数字信号:模拟信号经等间隔“采样”及幅值量化以后,时间和幅值均是不连续的(离散)的信号,例如0 /1
这里不需要经过施密特滤波,人家本来就要连续变化的模拟量
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值
除了模拟输入的这种模式会关闭数字输入功能其他七种模式,都可以通过输入寄存器读取I/O状态,例:在模拟I2C实验中把GPIO的工作模式配置为开漏输出时同时也可以读取引脚电平状态,现在不知道不要紧后面会详细讲解
在输出模式中,推挽模式时双 MOS 管以轮流方式工作,输出数据寄存器 GPIOx_ODR可控制 I/O 输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O输出高阻态或低电平。
1.推挽输出
当输出寄存器输出低电平,则引脚也输出低电平
2.开漏输出
当输出寄存器输出高电平,则引脚输出高阻态
当输出寄存器输出低电平,则引脚输出低电平
复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式, 但是输出信号源于其它外设
输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号
这里以串口的发送TX和接收RX引脚为例
串口的发送引脚TX
串口的接收引脚RX
这里串口外设不知道是什么不要紧,以后会细讲只要指到复用功能的推挽与开漏输出与普通的推挽与开漏输出只是输出的寄存器换成外设的寄存器
通过对 GPIO 寄存器写入不同的参数,就可以改变 GPIO 的工作模式,要了解具体寄存器时一定要查阅《STM32F10X-中文参考手册》中对应外设的寄存器说明。
在 GPIO 外设中,控制端口高低控制寄存器 CRH 和 CRL 可以配置每个 GPIO 的工作模式和工作的速度,每 4 个位控制一个 IO,CRH 控制端口的高八位,CRL 控制端口的低 8 位,具体的看 CRH 和 CRL 的寄存器描述
大家一定要把八种GPIO的模式都弄清楚原理,为后面学习打下坚实的基础,本文就到这里,如果还有朋友对寄存器不了解的请看
什么是寄存器觉的本文对你有帮助就快点赞收藏叭!!!
文章浏览阅读1.4k次,点赞10次,收藏8次。path 模块提供了。_前端代码 path
文章浏览阅读1.5w次,点赞2次,收藏25次。20款Notepad++插件下载和介绍转载地址http://paranimage.com/20-notepad-plus-plugins/Notepad++从3.4版本开始支持插件机制,让用户可选择的为本身已经优秀的Notepad++添加更多强大的功能。下面是20款Notepad++插件的介绍和下载地址。20款Notepad++插件_notepad插件下载
文章浏览阅读847次,点赞19次,收藏23次。在Java中,接口是一种特殊的引用类型,它定义了一组方法规范,但不实现这些方法(除了默认方法和静态方法)。接口是一种纯粹的抽象规范,没有状态(字段都是的)。_java解析接口信息
文章浏览阅读585次。关于笔者编译SDL不能使用的问题,具体原因笔者也未知,但从ldd查看相关联的库来看,通过命令安装的SDL,会链接到许多相关的库上,而笔者编译出来的库则缺少了很多链接。所以这里不推荐自行编译SDL,如果你发现自行编译的用了出现一些问题,比如打不开播放,比如莫名其妙的崩溃之类的,请卸载自行编译的SDL,安装前面apt的SDL。如果你的/usr/local/lib路径没有加入到动态库路径,请先执行下面的指令,增加到系统环境中去。关于x264的安装比较简单,下载源码,切入到源码目录。
文章浏览阅读96次。 学习JAVA,必须得安装一下JDK(java development kit java开发工具包),配置一下环境就可以学习JAVA了,下面是下载和安装JDK的教程: 1.JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/...
文章浏览阅读2.6w次,点赞90次,收藏35次。这里并没有什么破解盗版一说,完全是官网的活动,限时领取,不知道什么时候就不能用了,如果看到了就快领取试试吧,毕竟5T的空间比某盘要好用很多,还带Office全家桶通过其他工具下载某盘文件(无需下载某盘客户端)注册活动账号领取福利获取OneDriveOffice安装注册活动账号领取福利第一步,打开活动网站往下滑输入姓氏,名字,以及你想要的邮箱前缀,输入后点击人机验证,验证成功点击SIGN UP然后点击CONFIRM然后就是申请成功了,您的账号和默认的密码,点击SIGN IN进去._onedrive免费领取
文章浏览阅读1.6k次。期待已久的《黑客帝国:矩阵重启》于一月中旬上线,整个矩阵重启,大段的叙事和镜头都在向前三部致敬:Neo的再次被唤醒,所需要作的选择依然是“红与蓝”——红色药丸代表了真实但残酷的现实,蓝色药丸代表了虚拟但美好的梦境。你会选择哪一个?作为超级视觉大片,《黑客帝国4》的大场面也是给足感官刺激。DNEG作为《黑客帝国4》的主要视觉特效供应商,在其伦敦、温哥华和印度的设施中分担了700多个镜头,Evans作为DNEG的视觉特效总监监督了这项工作。视觉特效总监Huw Evans已经习惯于为世界上顶级大片工作。E
文章浏览阅读1.1k次。import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.util.Random;public class RandomStr { public static void main(String[] args) { ._random随机抽取一首诗
文章浏览阅读740次。前言课设基于SSM框架,数据库采用mysql,主要业务交给activiti,版本控制利用github。参考资料:Intellij 部署SSM框架Activiti就是这么简单方大师的教材下文斜体部分均为Activiti就是这么简单中小标题。演示地址项目源码activiti学习小记基于0中Activiti就是这么简单,做些笔记。当前环境:按照Intellij 部署SSM框架中..._基于activiti的学生请假管理系统
文章浏览阅读204次。本文是为大家整理的城市建筑主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为城市建筑选题相关人员撰写毕业论文提供参考。_城市空间文献有哪些
文章浏览阅读3.3k次。会声会影2023简单易用,具有拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑,实现影院级效果。优化分屏剪辑功能,简化多时间轴编辑的工作流程,让创作更轻松。添加趣味性3D标题,内置NewBlueFX和proDAD转场和防抖插件,一键防抖和校准色彩。使用MultiCam Capture Lite可以轻松录制并编辑视频教程、产品演示、游戏视频、在线课程。会声会影2023的智能工具,使用AI面部识别对效果最好的照片和视频片段进行分析,提取,并编译到可以项目中,将我们的精彩时刻_会声会影2023
文章浏览阅读1w次,点赞9次,收藏53次。Spring Boot 中的异步调用通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行。而异步编程则没有这个限制,代码的调用不再是阻塞的。所以在一些情景下,通过异步编程可以提高效率,提升接口的吞吐量。这节将介绍如何在Spring Boot中进行异步编程。要开启异步支持,首先得在Spring Boot入口类上加上@EnableAsync注解:@SpringBootApplication@EnableAsyncpublic _springboot异步调用