当前位置: 首页 > news >正文

stm32入门 2

GPIO简介

(1)GPIO(General Purpose lnput Output)通用输入输出口;

(2)可配置8种输入输出模式;

(3)引脚电平:0V~3.3V,部分引脚可容忍5V(有FT的)(但只能输出3.3V);

(4)输出模式下可控制端口输出高低电平,以驱动LED,控制蜂鸣器,模拟通信协议时序等;

(5)输入模式下可读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC 电压采集,模拟通信协议接收数据等;

GPIO基本结构

图1

图2

由图2可看出在stm32中所有的GPIO都是挂载在APB2外设总线上的;

每个GPIO模块内主要包含了寄存器和驱动器

寄存器

输出寄存器写1,对应的引脚就会输出高电平,写0,就会输出低电平;

输入寄存器读取为1,就证明对应端口目前是高电平,读取为0,就是低电平;

驱动器

驱动器是用来增加信号的驱动能力的,寄存器只负责存储数据(例如:点灯操作就需要驱动器负责增大驱动能力);

GPIO位结构

图3

输入部分

保护二极管

电压小于0V时VSS接通,电压大于3.3V时VDD接通,电压属于0~3.3V时两个保护二极管均不接通;

上拉电阻下拉电阻

给输入提供一个默认的输入电平,由于输入只能是高电平或低电平,若输入引脚什么都不接,输入就会处于一种浮空的状态,此时引脚的输入电平极易受到外界的干扰而改变,为了保证输入数据确定,就需要加上上拉电阻或下拉电阻(如果接入上拉电阻,当电阻悬空时,还有上拉电阻来保证引脚的高电平(又被称为默认为高电平的输入模式)(下拉同理));

肖特基触发器(施密特触发器)

图4

作用:对输入电压进行整形;

原理:如果输入电压大于某一阈值输出就会瞬间升为高电平,小于某一阈值就会瞬间降为低电平,在阈值内保持高电平或低电平(即只有高于上限或低于下限输出才会改变可参考图4);

连接至片上外设

模拟输入

连接到ADC,ADC接收模拟量,因此连接到施密特触发器之前;

复用功能输入

连接到其它需要读取端口的外设上,其接收的是数字量,因此在施密特触发器之后;

输出部分

位设置/清除寄存器

由于输出数据寄存器同时控制16个端口,并且这个寄存器只能整体读写,为了对某些口进行单独操作就需要用到位设置寄存器(可对某一位进行置1的操作,其余不需要操作的位置0)或位清除寄存器(想要置为0的写入1);

推挽输出(强推输出模式)

P-MOS和N-MOS均有效;

该模式stm32对IO口具有·绝对的控制权;

当数据寄存器为1时,P-MOS(上管)导通,N-MOS(下管)断开,输出直接接到VDD,也就是输出高电平;

当数据寄存器为0时,N-MOS(下管)导通,P-MOS(上管)断开,输出直接接到VSS,也就是输出低电平;

开漏输出

P-MOS无效,只有N-MOS工作;

当数据寄存器为1时,N-MOS(下管)断开,这时相当于断开,也就是高阻模式;

当数据寄存器为0时,N-MOS(下管)导通,输出直接接到VSS,也就是输出低电平;

开漏模式可作为通信协议的驱动方式,在多机通信的情况下这个模式可以避免各个设备的相互干扰,开漏模式还可用于输出5V的电平信号(输出低电平时N-MOS接VSS,输出高电平时,由外部的上拉电阻拉高至5V);

输出关闭

即为输入模式;

GPIO的八种模式

浮空/上拉/下拉输入

模拟输入

只有模拟输入会关闭数字的输入功能;

推挽/开漏输出

复用推挽/复用开漏输出

即使用片上外设来控制;

http://www.jsqmd.com/news/1185819/

相关文章:

  • Nacos搭建
  • IMPALA强化学习算法原理与工程实践
  • Godot对话系统插件Dialogue Manager 3实战:从原理到高级应用
  • 终极指南:如何用OpCore Simplify一键生成完美黑苹果EFI配置
  • sbt-docker常见问题解答:解决Scala项目容器化中的9个痛点
  • CentOS yum源配置与优化全指南
  • Bresenham画圆算法:C++实现与图形学底层优化实践
  • 潮湿环境下用什么胶带能保持粘性不衰减? - 中媒介
  • C++贪心算法解决找零问题:原理、实现与优化实践
  • esm模块与commonjs模块相互调用的方法
  • 面向多智能体系统的统一认知协议栈设计与实现——以WSaiOS为例
  • 多租户系统AI评审:数据隔离与性能优化实战
  • Palworld存档编辑工具:从神秘二进制到可读JSON的魔法转换
  • 终极指南:如何将闲置USB-C显示屏变身为个性化系统监控中心
  • [具身智能-591]:RDK X5 3.5mm 音频口搭配 4 段式耳机完整详解
  • Flask API 生产级 Docker 化:从环境一致性到容器健壮性
  • 3分钟快速搭建你的AI股票分析平台:TradingAgents-CN终极指南
  • 形态学操作原理与实战:结构元素设计、开闭运算及工业应用
  • 系统架构师备考指南:考前动员
  • 2026年实测:免费的PDF转Word哪个好用 亲测避坑指南 - 图片处理研究员
  • 28天免费掌握GDScript编程:从零到游戏开发实战指南
  • TMC7300与PIC18F2620构建高性能有刷直流电机控制系统
  • 元初混沌物理 108 篇 第九十二篇 七星节律体系总闭环
  • 多维聚合中的数据变形:从groupby到分析视图的四次跃迁
  • Cocos事件响应混乱的三大解决策略:冒泡、层级与全局管理
  • linux下开发stm32
  • OnscripterYuri WebAssembly优化技巧:提升浏览器游戏性能的10个方法
  • 3种高效部署策略:Qwen3-32B模型优化与资源效率平衡指南
  • C++实现数据归一化:从原理到高性能工程实践
  • AD7490与PIC18F47Q10构建高性价比数据采集系统