当前位置:首页 > 公众号精选 > 程序员小哈
[导读]击上方“程序员小哈”,选择“星标公众号”干货福利,第一时间送达!大家好,我是程序员小哈。今天给大家分享一下GPIO基础,参考资料:STM32F1xx官方资料:《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)GPIO是通用输入/输出端口的简称,是ST...



干货福利,第一时间送达!

大家好,我是程序员小哈。


今天给大家分享一下 GPIO 基础,参考资料:


STM32F1xx 官方资料:


《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)


GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。


STM32的八种GPIO口模式


1) GPIO_Mode_AIN 模拟输入;
2) GPIO_Mode_IN_FLOATING 浮空输入;
3) GPIO_Mode_IPD 下拉输入;
4) GPIO_Mode_IPU 上拉输入;

5) GPIO_Mode_Out_OD 开漏输出;
6) GPIO_Mode_Out_PP 推挽输出;
7) GPIO_Mode_AF_OD 复用开漏输出;
8) GPIO_Mode_AF_PP 复用推挽输出。
STM32 普通 GPIO 内部逻辑图


保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管。


P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。


TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)


查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。


备注:导通路径为黄色部分。


1、模拟输入 GPIO_Mode_AIN


此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。


2、浮空输入 GPIO_MODE_IN_FLOATING


此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。


3、下拉输入GPIO_Mode_IPD


此模式检测到电平默认为低,可以检测到由低到高的电平变化。


4、上拉输入GPIO_Mode_IPU


此模式检测到电平默认为高,可以检测到由高到低的电平变化。


5、开漏输出GPIO_Mode_Out_OD


开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。


6、推挽输出GPIO_Mode_Out_PP


推挽输出用于输出高低电平,是最常用的模式


7、复用开漏输出GPIO_Mode_AF_OD


复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”。


8、复用推挽输出GPIO_Mode_AF_PP


其他复用比如 SPI 等可以选择复用推挽输出。



什么是推挽结构和推挽电路?


推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。


推挽输出和开漏输出



左侧为推挽输出,可以输出高低电平。右侧为开漏输出,只能输出低电平,高电平靠外部上拉电阻决定。


图中所示为三极管,也可以叫开集输出(集电极开路输出),开漏输出是当这个管子为MOS管,漏极开路输出,叫开漏输出。


推挽输出:上面三级管导通,输出高电平,下面三极管导通,输出低电平。


开漏输出:三极管导通输出低电平,三极管截止是高阻态,电平由外部上拉电阻决定。


推挽输出高电平(向负载推流):




推挽输出低电平(从负载拉流):



·················· END ··················



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

GPIO全称General Purpose Input Output即通用输入/输出,其实GPIO的本质就是芯片的一个引脚,通常在ARM中所有的I/O都是通用的。不过由于每个开发板上都会设计不同的外围电路,这就造成GPI...

关键字: GPIO 芯片

Q:如果系统中的FPGA/微处理器上只剩下一个GPIO,该如何进行模拟测量?A:可以使用电压-频率转换器代替模数转换器。在关注机器健康和其他物联网(IoT)解决方案的现代应用中,随着检测功能的日趋普及,对更简单的接口以及...

关键字: GPIO 测量温度 数字接口 ADC

作 者:道哥,10年嵌入式开发老兵,专注于:C/C、嵌入式、Linux。关注下方公众号,回复【书籍】,获取Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章(PDF格式)。目录示例程序目标编写驱动程序编写应...

关键字: GPIO 编写 驱动程序

你是否遇到过某个MCU串口不够的情况? 这时我们可以考虑用GPIO去模拟,如何具体实现呢?首选我们需要了解串口的传输协议,UART使用异步模式工作,不需要时钟信号,其一般格式为:起始位数据位校验位停止位。其中起始位1位,...

关键字: GPIO IO模拟

关于GPIO,先来看个笑话 面试官:“听说过GPIO么?” 工程师:“听说过,经常用。” “GPIO是什么?“” “。。。。。。GPIO就是GPIO啊。。。” “GPIO有什么用?” “。。。。。。不知道。。。” “好了...

关键字: GPIO

GPIO口的定义: GPIO口,通用输入输出,这个大家都知道,但是输入,输出的电路是什么样的,其实并不用太关心,只需配置寄存器即可,但是还是要摸一摸,为了方便理解,引入了单片机的IO口原理图来说明(道理是一样的)。 认识...

关键字: GPIO 上拉电阻 电路图

GPIO口的定义: GPIO口,通用输入输出,这个大家都知道,但是输入,输出的电路是什么样的,其实并不用太关心,只需配置寄存器即可,但是还是要摸一摸,为了方便理解,引入了单片机的IO口原理图来说明(道理是一样的)。 认识...

关键字: GPIO 上拉电阻

为了学习单片机而去学习单片机的思路是不对的 你问 如何系统地入门学习stm32? 本身就是一个错误的问题 假如你会使用8051 会写C语言 那么STM32本身并不需要刻意的学习。 你要考虑的是 我可以用STM32实现什么...

关键字: STM32 研讨会 BSP GPIO

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看编程笔记! 前言 之前我们已经通过几篇笔记来学习点灯了: 【Linux笔记】LED驱动程序 【Linux笔记】LED驱动实验(总线设备驱动模型) 【Linux笔记】...

关键字: GPIO 子系统 Linux BSP

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看编程笔记! 前言 我们可以从LED程序中榨取很多知识:基本的驱动框架、驱动的简单分层、驱动的分层+分离思想、总线设备驱动模型、设备树等。这大多都是结合韦老师的教程学...

关键字: Linux BSP GPIO SE
关闭
关闭