单片机GPIO使用浅析

一、简介

GPIO为通用输入输出端口的简称,有八种模式
输入:

  • 模拟输入
  • 浮空输入
  • 上拉输入
  • 下拉输入

输出:

  • 推挽输出
  • 开漏输出
  • 复用推挽输出
  • 复用开漏输出

二、内部简单框图

以GD32F303为例:
在这里插入图片描述

三、输入

3.1 模拟输入

单片机ADC输入,模拟转数字,用于采集电压,电流等信息。

3.2 浮空输入

电平状态由外部决定,一般外部有接上拉或下拉电阻

3.3 上拉输入

在没有信号输入时,默认是高电平

3.4 下拉输入

在没有信号输入时,默认是低电平

读取电平状态以及上下拉电阻大小?

输入电平怎么判断呢?
查看数据手册,一般0.7VDD以上为高电平,0.3VDD以下为低电平
若处于两种之间为什么电平呢?

  • 有施密特触发器,维持之前电平
  • 无触发器,电平不定

以GD32F303为例,查看数据手册大于0.7VDD读取为高电平,低于0.3VDD为电平。中间由于有施密特触发器,维持之前的电平状态。

上下拉电阻为多少?
以GD32为例,查看数据手册IO口上下拉电阻一般为40kΩ
在这里插入图片描述

四、输出

4.1 推挽输出

内部结构由一个PMOS和NMOS组成,组成推挽电路。单片机写1时,IO接VDD,输出高电平;单片机写0时,IO接VSS,输出低电平。

4.2 开漏输出

单片机写1时,IO为高阻态,输出电平由外部电路决定;单片机写0时,IO接VSS,输出低电平。可以实现“线与”的功能。也可用于电平转换。

4.3 复用推挽输出

一些外设IO配置,如输出PWM等

4.4 复用开漏输出

一些外设IO配置,如IIC等

输出速度如何选择?

查看数据手册可知,通过配置IO相关寄存器,可以设置IO输出速度。
一般有2Mhz,10Mhz,50Mhz。
输出速度频率 f = 1 / T
查看数据手册可知
在这里插入图片描述
IO输出速度越快,那么Tr+Tf的时间就要越短,电容不变的情况下,那么需要提高电流。
输出速度越快,功耗越高,而且可能存在干扰等情况。
所以一般选择和自己外设相对应的速度。比如串口波特率为9600,那么IO配置为低。

五、附录

参考资料
1、https://www.gd32mcu.com/data/documents/userManual/GD32F30x_User_Manual_Rev2.9_CN.pdf
2、https://www.gd32mcu.com/data/documents/datasheet/GD32F303xx_Datasheet_Rev2.1.pdf
3、http://t.csdn.cn/L49t9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值