当前位置: 代码迷 >> 综合 >> STM32F407--GPIO的工作原理
  详细解决方案

STM32F407--GPIO的工作原理

热度:97   发布时间:2023-12-28 15:42:56.0

一、参考资料

1、STM32F407ZGT6.pdf(探索者\资料盘A\7,硬件资料\2,芯片资料)[芯片资料]

2、STM32F4xx中文参考手册.pdf(探索者\资料盘A\8,STM32参考资料)[中文参考手册]

3、STM32F4开发指南-库函数版本_V1.1.pdf(探索者\资料盘A)[正点原子的开发指南]

 

二、GPIO口的基本结构

三、引脚的说明

注:STM32大部分引脚可以当GPIO口外,还可以复用为外设功能引脚(如串口)。

 

四、GPIO的工作模式

1、4种输入模式

(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_IPU 上拉输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_AIN 模拟输入

2、4种输出模式

(5)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)
(6)GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)
(7)GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)
(8)GPIO_Mode_AF_PP 复用推挽输出(带上拉或者下拉)
3、4种最大输出速度
(1)2MHZ
(2)25MHZ
(3)50MHZ
(4)100MHZ
4、常用的GPIO工作模式
(1)平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种

 

五、IO口的基本结构

1、M3的IO口基本结构

2、M4的IO口基本结构

3、区别是M4的IO口输入输出都支持上拉下拉。同时标识“FT”标识IO口支持5V容忍(IO口的输出是3.3V,但是可以容忍输入时5V

 

五、GPIO工作模式图解

1、浮空输入

2、上拉输入

3、下拉输入

4、模拟输入

5、开漏输出

6、复用开漏输出

7、推挽输出

8、复用推挽输出

9、简单总结

推挽输出:可以输出强高低电平,连接数字器件

开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

 

六、GPIO口的相关配置

1、STM32F407每组16个I/O口对应10个寄存器

每个通用 I/O 端口包括 4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、
GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 个 32 位数据寄存器(GPIOx_IDR 和
GPIOx_ODR)、1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、1 个 32 位锁定寄存器
(GPIOx_LCKR) 和 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)

2、端口模式寄存器(GPIOx_MODER)

3、端口输出类型寄存器(GPIOx_OTYPER)

4、端口输出速度寄存器(GPIOx_OSPRRDR)

5、端口上拉/下拉寄存器(GPIOx_PUPDR)

6、端口输入数据寄存器(GPIOx_IDR)

7、端口置位/复位寄存器(GPIOx_BSRR)