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

32单片机——GPIO的工作模式

1、GPIO

        GPIO(General Purpose Input Output,通用输入输出端口)是控制或者采集外部器件的信息的外设,即负责输入输出。它按组分配,每组16个IO口,组数视芯片而定。STM32F103ZET6芯片是144脚的芯片,具有GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF和GPIOG七组GPIO口,共有 112个IO口可供我们编程使用。

        这里重点说一下STM32F103的IO电平兼容性问题,STM32F103的绝大部分IO口,都兼容5V,至于到底哪些是兼容5V的,请看STM32F103xE的数据手册(注意是数据手册,不是中文参考手册),见表5大容量STM32F103xx引脚定义,凡是FT标志的,都是兼容5V 电平的IO 口, 可以直接接5V的外设(注意:如果引脚设置的是模拟输入模式,则不能接5V!),凡是不带FT标志的,就建议大家不要接5V了,可能烧坏MCU

2、GPIO工作模式

输入模式:输入浮空、输入上拉、输入下拉、模拟功能

输出模式:开漏输出、推挽输出、开漏式复用功能、推挽式复用功能

3、GPIO的基本结构

 

如上图所示,可以看到右边只有I/O引脚,这个I/O引脚就是我们可以看到的芯片实物的引脚,其他部分都是GPIO的内部结构

(1)保护二极管

        保护二极管共有两个,用于保护引脚外部过高或过低的电压输入

        当引脚输入电压高于VDD时,上面的二极管导通;当引脚输入电压低于VSS时,下面的二极管导通,从而使输入芯片内部的电压处于比较稳定的值

        虽然有二极管的保护,但这样的保护却很有限,大电压大电流的接入很容易烧坏芯片

(2)上拉、下拉电阻

        I/O引脚为高阻态时使用,阻值大概在30~50K欧之间,可以通过上、下两个对应的开关控制,这两个开关由寄存器控制

        没有外部的上、下拉电压,引脚的电平由引脚内部上、下拉决定。开启内部上拉电阻工作,引脚电平为高;开启内部下拉电阻工作, 则引脚电平为低;内部上、下拉电阻都不开启,这种情况是浮空模式

(3)施密特触发器

        就是一种整形电路,可以将非标准方波整形成方波

        特点:当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变

(4)P-MOS管和N-MOS管

        控制GPIO的开漏输出和推挽输出两种模式

        开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行

        推挽输出:这两只对称的MOS管每次只有一 只导通,所以导通损耗小、效率高

3.1 输入浮空

        上拉/下拉电阻为断开状态,施密特触发器打开,双MOS管不导通

3.2 输入上拉

        上拉电阻导通,下拉电阻断开,施密特触发器打开,双MOS管不导通

3.3 输入下拉

        上拉电阻断开,下拉电阻导通,施密特触发器打开,双MOS管不导通

3.4 模拟功能

        上/下拉电阻断开,施密特触发器关闭,双MOS管也关闭

3.5 开漏输出

        上/下拉电阻断开,施密特触发器打开,P-MOS始终不导通

        往ODR对应位写0,N-MOS管导通----0;写1,N-MOS管不导通----高阻态

3.6 推挽输出

        上/下拉电阻断开,施密特触发器打开

        往ODR对应位写1,P-MOS管导通----输出1

        往ODR对应位写0,N-MOS管导通----输出0

3.7 开漏式复用功能

        上/下拉电阻断开,施密特触发器打开,P-MOS始终不导通

        往ODR对应位写0,N-MOS管导通----0;写1,N-MOS管不导通----高阻态

 特点:
    1、不能输出高电平,必须有外部上拉才能输出高电平
    2、由其他外设控制输出

3.8 推挽式复用功能

        上/下拉电阻断开,施密特触发器打开

        往ODR对应位写1,P-MOS管导通----输出1

        往ODR对应位写0,N-MOS管导通----输出0

 

相关文章:

  • Redis的string类型使用
  • Redis核心技术知识点全集
  • 第五章:5.3 ESP32物联网应用:阿里云IoT平台与腾讯云IoT平台的数据上传与远程控制
  • KafkaSpark
  • 初始SpringBoot
  • Java | 深拷贝与浅拷贝工具类解析和自定义实现
  • 数据预处理:前缀和算法详解
  • Vue3 + TypeScript 实现二维码生成与展示
  • poi生成横向文档以及复杂表头
  • 驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
  • 欧拉计划 Project Euler54(扑克手牌)题解
  • MySQL运算符
  • stack和queue的学习
  • 【实证分析】ESG发展对企业新质生产力影响的研究—来自中国A股上市企业的经验
  • ROS第十二梯:ros-noetic和Anaconda联合使用
  • Python常用的第三方模块之【pymysql库】操作数据库
  • HarmonyOS 5.0应用开发——MVVM模式的应用
  • CF2103F Maximize Nor
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • 深度学习中的黑暗角落:梯度消失与梯度爆炸问题解析
  • 水利部启动实施蓄滞洪区建设管理三年行动
  • 今天是世界读书日,上海准备了哪些文化大餐?
  • 4月语言学联合书单|法庭审判话语的态度表达及人际功能研究
  • 上海农房翻建为何难?基层盼政策适度松动
  • 上海交大发布“AI十条”,鄂维南院士已任该校人工智能学院讲席教授
  • 2025年福建省文旅经济发展大会召开