今天看了老师讲STM32的IO口视频讲解,自己做了以下整理:
GPIO口:
IO口引脚FT标识:可以容忍5V的IO口。
IO口寄存器必须要按32位字被访问。
工作方式:
1、4种输入模式:输入浮空(浮空输入,可以做KEY识别,RX1)、上拉模式(上拉电阻,VDD闭合(电阻30—50K))、下拉模式(下拉电阻,Vss闭合)、模拟输入(AD转换(0-3.3V))。
2、4种输出模式:开漏输出模式(cpu写寄存器控制,输出1,按外部上拉下拉电阻决定,输出0,IO口输出低电平)、开漏复用输出模式(复用功能外设决定输出)、推挽输出模式(输出1,pMOS导通,NMOS管截止,IO口高电平)、推挽复用输出。
推挽输出:可以输出强高低电平,连接数字器件。
开漏输出:只可以输出强低电平,高电平的靠外部电阻拉高。
GPIO相关配置寄存器:(每个IO口都有7个寄存器来控制)
端口配置低/高寄存器(GPIOx_CRL/CRH):CRL/CRH每四个位控制一个IO口,CRL控制标号的0-7的口(低8位输出口),CRH控制8-15的口(高8位输出口)。CRL的复位值为0X4444 4444,此寄存器每个IO口的位占用CRL的4个位,高两位为CNF,低两位为MODE。几个常用配置:0X0表示模拟输入模式(ADC用),0X3表示推挽输出模式(做输出口用,50M速率),0X8表示上/下拉输入模式(做输出口用),0XB表示复用输出(使用IO扣得第二功能,50M速率)。
端口输入数据寄存器(GPIOx_IDR):IDR寄存器低16位,每个位控制该组IO的一个IO口,对应IO口的输入电平,该寄存器为只读寄存器(可查看某个IO口的状态)。
端口输出数据寄存器(GPIOx_ODR):ODR是控制IO口的输出,低16位每个位控制一个IO口的输出电平高或低。(控制上拉下拉,上拉1,下拉0)该寄存器为可读写寄存器,从该寄存器读出来的数据可以用于判断当前IO口的输出状态;而向该寄存器写数据,可控制某个IO口的输出电平。
端口位设置/清除寄存器(GPIOx_BSRR):BSRR寄存器低16位,对应位设置为1,那么IO口输出为高电平,对应位设置为0,对应IO口不产生任何影响,高16位作用相反。
端口复用功能:STM32大部分端口都具有复用功能。所谓复用,就是一些端口不仅可以做通用的IO口,还可以复用为一些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。
STM32的所有IO口都可以作为中断输入。