stm32f407的IO口可由软件配置成8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏式复用功能。
下列分别是GPIOx常用配置相关的寄存器:
1、MODER寄存器(端口模式)
32位寄存器,每两位控制一个IO口的模式,总共16组。00:输入、01:通用输出模式、10、复用功能模式、11:模拟模式,该寄存器在复位后,一般都是0,也就是默认条件下一般是输入状态。
2、OTYPER寄存器(输出类型)
32位寄存器,高16位保留,必须保持复位值,低16位,每位控制一个IO口输出类型。0:输出推挽、1:输出开漏,该寄存器仅用于输出模式,复位后各位为0,默认输出类型是推挽输出。
3、OSPEEDR寄存器(输出速度)
32位寄存器,每两位控制一个IO口的模式,总共16组。00:2MHz、01:25MHz、10、50MHz、11:100MHz,该寄存器仅用于输出模式,复位后各位为0
4、PUPDR 寄存器(上拉下拉)
32位寄存器,每 2 个位控制一个 IO 口,用于设置上下拉。00:无上拉下拉、01:上拉、10、下拉、11:保留。
库函数的GPIOx配置函数:
void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState) 引脚时钟使能
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
引脚初始化
下列分别是GPIOx常用参数设置相关的寄存器
ODR寄存器,控制IO口的输出状态,与读取IO口的输出状态,改变整组IO口状态,一般不用此寄存器,相关库函数如下
void GPIO_Write(GPIO_TypeDef* GPIOx,uint_t PortVal)
IDR寄存器,读取IO口的输入状态,相关库函数如下
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx) 读取某组IO口
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读取某个IO口
BSRR寄存器 控制IO口的输出状态,改变单个IO口状态, BSRRL写1则置1,写0无反应,BSRRH写1则置零,写0无反应,相关库函数如下:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 置1
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)置0,PXout()
stm32f407的IO口可由软件配置成8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏式复用功能。
下列分别是GPIOx常用配置相关的寄存器:
1、MODER寄存器(端口模式)
32位寄存器,每两位控制一个IO口的模式,总共16组。00:输入、01:通用输出模式、10、复用功能模式、11:模拟模式,该寄存器在复位后,一般都是0,也就是默认条件下一般是输入状态。
2、OTYPER寄存器(输出类型)
32位寄存器,高16位保留,必须保持复位值,低16位,每位控制一个IO口输出类型。0:输出推挽、1:输出开漏,该寄存器仅用于输出模式,复位后各位为0,默认输出类型是推挽输出。
3、OSPEEDR寄存器(输出速度)
32位寄存器,每两位控制一个IO口的模式,总共16组。00:2MHz、01:25MHz、10、50MHz、11:100MHz,该寄存器仅用于输出模式,复位后各位为0
4、PUPDR 寄存器(上拉下拉)
32位寄存器,每 2 个位控制一个 IO 口,用于设置上下拉。00:无上拉下拉、01:上拉、10、下拉、11:保留。
库函数的GPIOx配置函数:
void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState) 引脚时钟使能
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
引脚初始化
下列分别是GPIOx常用参数设置相关的寄存器
ODR寄存器,控制IO口的输出状态,与读取IO口的输出状态,改变整组IO口状态,一般不用此寄存器,相关库函数如下
void GPIO_Write(GPIO_TypeDef* GPIOx,uint_t PortVal)
IDR寄存器,读取IO口的输入状态,相关库函数如下
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx) 读取某组IO口
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读取某个IO口
BSRR寄存器 控制IO口的输出状态,改变单个IO口状态, BSRRL写1则置1,写0无反应,BSRRH写1则置零,写0无反应,相关库函数如下:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 置1
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)置0,PXout()
举报