stm32f407VG 这款单片机上共有PA‐PE 共5×16 共80 个复用IO 口,每个通用I / O 端口有4个32 位配置寄存器(GPIOx_MODER ,GPIOx_OTYPER,GPIOx_OSPEEDR,GPIOx_PUPDR),2个32 位数据寄存器(GPIOx_IDR 和GPIOx_ODR),一个32 位的置位/复位寄存器(GPIOx_BSRR),32位锁定寄存器(GPIOx_LCKR)和两个32 位的备用功能选择寄存器(GPIOx_AFRH,GPIOx_AFRL)。
4 个32配置寄存器
GPIOx_MODER:(输入输出模式选择)
原文(select the I/Odirection (input,output,AF,analog).)
功能
Input: 输入模式
output:输出模式
AF : 备用功能模式
analog:模拟模式
GPIOx_OTYPER (gpio输出类型)
原文pushpull or open-drain
GPIO_OType_PP = 0x00, 推完输出
GPIO_OType_OD = 0x01 开漏输出
GPIOx_OSPEEDR:(输出速度寄存器)
原文
The I/O speed pins are directlyconnected to the
corresponding GPIOx_OSPEEDR register bits whatever theI/O direction
GPIO_Speed_2MHz 选择Io输出频率
GPIO_Speed_25MHz
GPIO_Speed_50MHz
GPIO_Speed_100MHz
注:如果输出速度>=50M,开启补偿单元
GPIOx_PUPDR:(上拉下拉寄存器)
原文功能
used to select the pull-up/pull-down whatever the I/Odirection
GPIO_PuPd_NOPULL= 0x00, 不拉
GPIO_PuPd_UP = 0x01, 上拉
GPIO_PuPd_DOWN = 0x02 下拉
2个32 位数据寄存器
原文
GPIOx_ODR stores the data to be output, it is read/write
accessible. The data inputthrough the I/O are stored into the input data register
GPIOx_ODR 输出数据寄存器
该寄存器只可以读取和写入
(GPIOx_IDR), a read-only register.
GPIOx_IDR 输入数据寄存器
该寄存器只可以读取可以位读取,包含相应i/o端口的值
GPIOx_BSRR 32位寄存器
BSRRL 低16位寄存器给其赋值1置位给相应的 GPIOx_ODR 置1
BSRRH低16位寄存器给其赋值1置位给相应的 GPIOx_ODR 置0
原文
When written to 1, bit BSRR(i) 【BSRRL】setsthe correspondingODR(i) bit. When
written to 1, bit BSRR(i+SIZE)【BSRRH】 resets the ODR(i)corresponding bit.
GPIOx_LCKR 32位锁定寄存器
GPIOx_LCKR 备用锁定寄存器
GPIO设置步骤:
1. 使能相关时钟
2. 设置相应的 IO 口为输入或输出
3. 设置输入\输出的类型
4. 设置输出的速度(如果设置为输入,此步跳过)
5. 如果输出速度>=50M,开启补偿单元
6. 设置上拉下拉寄存器
7. 通过复位置位寄存器和输入输出数据寄存器进行操作。