这是STM32的I/O口的基本结构。 主要分为输入驱动器和输出驱动器。
每个IO口的内部电路的引脚电平是0v~3.3v,FT标识的IO口是是可以使用5v的。 如果输入电压>3.3v,从VDD_FT走,保护电路,若电压<0v,从VSS走。起的作用就是一个保护的作用。
然后来到上拉电阻和下拉电阻 上拉电阻和下拉电阻为了给输入一个默认的电平。如果接上拉电阻就是上拉输出,如果接下拉电阻就是下拉输出,如果都不接就是浮空。
如果输出不接上拉/下拉电阻,电平容易收到干扰。
也就是说,上拉输入为默认高电平输入方式,下拉输入为默认低电平输入模式。
并且阻值较大,是一种弱上拉和弱下拉,目的是尽量不影响正常是输入操作。
TTL肖特基触发器:对输入电压进行整形,输入电压大于某一高阈值,就是是高电平,如果小于某一低阈值,就是低电平。高阈值和低阈值之间有一段空隙,这样可以有效避免因为信号波动造成的输出抖动现象。
经过触发器整形的波形可以进入输入数据寄存器,再对此进行读取就可以知道输入的电平。
模拟输入和复用功能输入就是连接到片上外设的一些端口。
这个mos管是一种电子开关,我们的信号来控制开关的导通和关闭,开关负责将IO口接到VDD或者VSS,在这里可以选择推挽、开漏或关闭三种输出方式。
推挽输出模式下,p-mos和n-mos均有效。数据寄存器为1时(上管导通,下管断开,输出直接接到VDD)-> 输出高电平。数据寄存器为0时(上管断开,下管导通,输出直接到VSS)-> 输出低电平。此模式下,高低电平均有较强的驱动能力,故推挽输出也可以叫强推输出模式,此时STM32对IO口有绝对的控制权,高低电平都由STM32说了算 /
开漏输出模式下,p-mos无效,n-mos在工作。数据寄存器为1时下管断开,这时输出相当于断开,也就是高阻模式。数据寄存器为0时,下管导通,输出直接接到VSS,输出低电平。这种模式下只有低电平有驱动能力,高电平没有驱动能力。这个模式可以作为通信协议的驱动方式,比如I2C,在多机通信下,这个模式可以避免各个设备间的互相干扰。可该模式还可用于输出5v的电平信号(连接一个5v的电压(有这么个方法但是我不知道更具体的了)),可兼容5v的设备,这是开漏输出的主要用途。
关闭状态下,当引脚配置为输入模式时,这两个mos管均无效,输出关闭,端口的信号由外部信号来控制。
通过对这些寄存器进行配置,端口可配置成8种模式 前三个的区别是上拉电阻和下拉电阻的连接
模拟输出的特征是GPIO无效,引脚直接接入内部ADC,可以说是ADC模数转换器的专属配置。
端口配置寄存器 关于输出模式的速度,这个是为了低功耗和稳定性。
LED和蜂鸣器
LED:发光二极管,正向通电点亮,反向通电不亮
有源蜂鸣器︰内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器︰内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音
点亮LED灯
用的板子是正电原子的mini板 观察开发板原理图 主要的过程是 1、配置时钟 2、配置引脚 3、输出电平的设置
|