STM32F1学习笔记:GPIO工作原理

(请大佬们不要点进来啦,这是一篇写给自己和其他小白们的学习笔记~)

一、GPIO基本结构
在这里插入图片描述
有(FT)标识,说明这个IO口可以容忍5V。也即虽然输出高电平只有3.3V,但是如果在IO口加上5V的电压,它也可以识别为高电平。

二、GPIO的工作方式
1、四种输入模式:
输入浮空:可读取外部电平
输入上拉:比浮空模式多了一个上拉电阻
输入下拉:比浮空模式多了一个下拉电阻
模拟输入:AD转换(一般说电压指的是模拟量,电平指的是数字量)
2、四种输出模式:
开漏输出:很像数电里的OD门,CPU可以读输出的电平
开漏复用功能:由外设控制
推挽式输出:CPU可以读输出的电平
推挽式复用功能:由外设控制
3、三种最大翻转速度

三、GPIO相关配置寄存器
每组GPIO端口含有的寄存器包括:
(比如zet6有7组,那么它就有7*7个寄存器,一组GPIO有16个IO口)

1、两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
配置每个IO口需要4个bit(2个bit用来配置输入或输出的模式,2个bit用来配置是输入模式还是输出模式及其速度),也就是说一个配置寄存器只能配置8个IO口,因此需要两个配置寄存器。
CRL和CRH的作用是一样的,区别在于CRL控制标号0~7,CRH控制标号8-15。

2、两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)
IDR是端口输入数据寄存器,读IO口的输入数据,输出模式下也可以使用。
ODR是端口输出数据寄存器。在输出模式下,可配置IO口的输出电平;在输入模式下,还可以用于确定输入到底是上拉模式还是下拉模式,因为CRL和CRH只能确定输出为“上拉/下拉模式”。

3、一个32位置位/复位寄存器(GPIOx_BSRR)
用来设置ODR寄存器,达到仅设置某1个bit,而不影响其他位的目的。

4、一个16位复位寄存器(GPIOx_BRR)
通常是只用BSRR的低16位和BRR,BSRR的高16位很少用

5、一个32位锁定寄存器(GPIOx_LCKR)

四、端口复用功能
也就是说,一些端口不仅仅可以作为通用IO口,还可以复用为一些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。可以最大限度的利用端口资源。


以上是我学习正点原子视频的学习笔记,理解不到位的地方欢迎大家批评指正~

猜你喜欢

转载自blog.csdn.net/Chelsea_n/article/details/106856859