每组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口都可以作为中断输入。