GPIO工作原理 及 寄存器应用

来源:互联网 发布:新侠客行 知乎 编辑:程序博客网 时间:2024/05/01 02:16

一.基本结构与工作方式

STM32F407ZGT6芯片有144个引脚,7组IO口(标号范围:GPIOA,GPIOB......GPIOG),每组IO口有16个IO(范围:GPIOA.0......GPIOA.15),一共有16*7=112个IO。

IO口的复用:STM32的大部分引脚除了作为GPIO使用,同样能作为外设功能引脚(例如串口,定时器)。

工作方式:

1)输入模式:

1.输入浮空

2.输入上拉

3.输入下拉

4.模拟输入(AD转换)

2)输出模式

1.开漏输出

2.开漏复用

3.推挽式输出

4.推挽式复用

TIPS:

推挽输出:

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

开漏输出:

只可以输出强低电平,高电平靠外部电阻拉高。

3)最大输出速度

1.2MHZ

2.25MHZ

3.50MHZ

4.100MHZ

TIPS:FT(five tolerance):5V容忍:原本输入3.3V电压,可以容忍输入5V电压。

二.寄存器

32位寄存器,范围:0......31。

每组GPIO端口(16个IO口)有10组寄存器:

1)GPIOx_MODER端口模式寄存器 32位配置寄存器2(每个IO口占用位数)

每个IO口占用两位,控制端口x,通过寄存器2x,2x+1两位

00:输入(复位状态)

01:通用输出模式

11:模拟模式

2)  GPIOx_OTYPER端口输出类型寄存器 32位配置寄存器 1

每个IO口占用1位,使用低16位,高16位保留不用。

0 :输出推挽(复位状态)

1 : 输出开漏

3)  GPIOx_OSPEEDR端口输出速度寄存器 32位配置寄存器 2

00:2MHZ

01:25MHZ

10:50MHZ

11:30pF时为100MHZ,15pF时为80MHZ

4)  GPIOX_PUPDR端口上下拉寄存器 32位配置寄存器 2

00:无上拉或下拉

01:上拉

10:下拉

11:保留

5)  GPIOx_IDR端口输入数据寄存器 32位数据寄存器1

使用低16位,为只读形式,只能在字模式下访问。

6)  GPIOx_ODR端口输出数据寄存器32位数据寄存器 1

使用低16位,

1:高电平

0:低电平

7)  GPIOx_BSRR端口置位/复位寄存器 32位数据寄存器5和6的综合,比较好用)

BSRR寄存器32位分为低16位BSRRL(配置一组IO口的16个IO口的置位状态:1)

 高6位BSRRH(配置一组IO口的16个IO口的置位状态:0).

8)  GPIOX_LCKR端口配置锁寄存器

9)  GPIOx_AFRL      复位功能寄存器 //9和10用于配置串口(端口复用功能:最大限度地使用IO口资源)

10)GPIOx_AFRH  复位功能寄存器

1.如果配置一个IO口需要2个位,则刚好32位寄存器配置一组IO口,16个IO口。

2.如果配置一个IO口需要1个位,则一般使用低16位,保留高16位。

3.所有IO口都可以作为中断输入。

1 0