一,输入
1.I/O保护二极管
VDD是指电源的正电路
VSS是指电源的负电路
电路中VDD的作用为防止输入电压高于3.3v(在高于3.3v时VDD导通,电流流入VDD不对电路造成影响)
电路中VSS的作用为防止输入电压小于0v(低于0v时VSS导通,电流从VSS流出不对电路造成影响)
故,当电压在0~3.3v时才能输入到电路中
2.上拉电阻与下拉电阻
(1)输入模式:当上面导通,下面断开----上拉输入模式
下面导通,上面断开----下拉输入模式
都断开----浮空输入模式
(2)作用:为输入提供一个默认输入电平
上拉输入模式为电路提供默认为高电平的输入模式
下拉输入模式为电路提供默认为低电平的输入模式
注:为了不影响输入,采用弱上拉与弱下拉
3.施密特触发器
[触发器的概念:触发器是时序逻辑电路的基本单元,用来存储1位2进制信息,具有记忆和存储功能,其信息由双稳态电路来保存。
什么是施密特触发器:https://zhuanlan.zhihu.com/p/577362964?utm_id=0]
(1)施密特触发器的作用:对于输入电压进行整形,当输入电压大于某一阈值(在此为3.3v),输出会瞬间升为高电平,当输入电压小于某一阈值(此处为0v),输入电压瞬间降为低电平,当电平在阈值之内,电平高低不变,为稳定输出,直到下一次超出阈值(如当电平为高时,电压大于3.3v电平不变,但小于0v时变为低电平)
施密特触发器能有效的防止因信号波动而造成的输入抖动现象,这样就能将经过整形的数据直接写入输入数据寄存器。
通过程序读取寄存器的对应某一位的数据,就能够知道输入电平了
4.模拟输入与复用功能输入:
(1)模拟输入:连接至ADC,ADC需要接收模拟量所以接到施密特触发器的前面
[ADC是什么:【STM32】ADC的基本原理、寄存器(超基础、详细版)-优快云博客]
(2)复用功能输入:连接到读取端口的外设上,需要接收数字量,故需要经过施密特触发器整形,接在施密特触发器后
二, 输出
1.数字数据(离散的)的输出:输出的数字数据有两种输出方式,分别为通过数据寄存器输出与通过片上外设输出
(1)
输出数据寄存器同时控制16位端口,且只能整体读写。若想单独控制,只能通过特殊方式:
Ⅰ--读出寄存器所存放的数据,用按位与与按位或的方式更改某一位,再将原来的数据写回去(该方式比较麻烦,不常用)
Ⅱ:利用位设置/清除寄存器,若对某一位置进行写1的操作,在位设置寄存器对应位置写1即可,若对某一位进行一个清0的操作,在位清除寄存器对应位置写1即可【位设置/清除寄存器】内部有电路会自动更改对应位置,而其它位置不变。(库函数的操作)
Ⅲ:读写stm32中的“位带”区域STM32(4)-位带操作_stm32位带操作-优快云博客
2.输出模式:
(mos管相当于电子开关PMOS管和NMOS管简单对比 - 知乎 (zhihu.com),由信号控制开关的导通和关闭,mos管负责将I/O口接到VDD或VSS)
(1)推挽输出模式:在推挽输出模式下P-MOS,N-MOS均有效
Ⅰ:数据寄存器为1时,上管导通,下管断开,接到VDD(高电平)
Ⅱ:数据寄存器为0时,上管断开,下管导通,接到VSS(低电平)
在该输出模式下,STM32对I/O口有着绝对的控制权,又叫强推输出模式
(2)开漏输出模式:开漏输出模式下P-MOS不参与,只有N-MOS参与
数据寄存器为1时,下管断开(高阻模式),输出相当于断开
数据寄存器为0时,下管导通,接入VSS,输出低电平(具有驱动能力)
通过上拉电阻才能输出高电平(能输出5v的电平)
用途:
Ⅰ.用于多机通讯(避免相互干扰)
Ⅱ.用于兼容5v的设备(通过外接上拉电阻,将电平拉高到5v)
(3)关闭:
当引脚配置为输入模式P-MOS,N-MOS都关闭(输出关闭),端口电平型号由外部信号控制
三.GPIO模式