GPIO(General Purpose Input Output)通用输入输出口,共可以配置八种输入输出模式
引脚电平:0~3.3V,部分引脚输入时可以忍受5V的电压,需查看用户手册来判断是否支持该功能,带有FT(Five Tolerate)的可以容忍5V
GPIO的基本结构
APB2外设总线连接着GPIOx,以下以GPIOA为例子,GPIOA中包含寄存器,驱动器以及引脚三部分。
寄存器的每一位对应着一个引脚,输出寄存器输出1,对应引脚输出高电平;输出0,对应低电平。每一个GPIOx都有16个引脚,如GPIOA,分别对应PA0,PA1......PA14,PA15。STM32寄存器有32位,只有低16位用于端口的输出,而高16位处于闲置状态,未能使用
驱动器:用于增加信号驱动能力,寄存器需要通过它才能发出足够强的信号使引脚产生效果
GPIO位结构
首先从输入设备开始
1.IO引脚接入两个保护二极管,上面计入VDD,3.3V,下面接入VSS,0V,如果IO引脚接入的电压高于3.3V,则上侧二极管导通,将电流引走,防止电流进入电路,造成电路电流过大导致的电路受损。如果输入电压小于0V,则下侧保护二极管导通,防止电路电流被吸走,从而起到保护电路的作用。
2.上接与下拉电阻
可通过程序控制这两个电阻开关,从而实现输入模式的改变。
上侧导通,下侧断开,就是上接输入模式;上侧断开,下侧导通,即是下接输入模式;如果两个都断开,就是浮空输入模式。但是如果使用浮空输入模式时引脚不接入电压,则电路电压极易受到外界干扰,处于一种浮空的状态。而单片机一般会判断“高”或“低”两种状态(类似早期计算机灯亮与不亮两种状态),这种浮空状态会导致输入数据不稳定。未解决这种问题,则需要加入上拉或者下拉电阻。
3.肖特基触发器(正确翻译为施密特触发器)
是将外部电路输入的模拟信号转换为数字信号,故而前面连的线为模拟输入,后面连的线为复用功能输入。工作原理是设定两个阈值,分为高阈值与低阈值,如果最开始施密特触发器为低电平,则在输入电流高于高阈值之前,向寄存器发射的都是低电平的信号,直到电流高于高阈值;同理,在到达高阈值后,在电流低于低阈值之前,输出的信号都是高电平的信号。这种设计是为了保证输入信号的稳定性,防止随时变更。
4.将数字信号写入输入数据寄存器
5.模拟输入:
连接到ADC线上,ADC需要接受模拟量,计入施密特触发器之前。现阶段不学
6.复用功能输入:
连接到其他需要读取端口的外设上,比如串口的输入引脚,接受数字信号,故而在施密特触发器后