[信息] GPIO_Init()函数的理解

[复制链接]
2287|27
belindagraham 发表于 2024-1-13 11:31 | 显示全部楼层
通过GPIO_Init()函数对这些参数进行配置后,才会按照你的设定来改变GPIO的工作状态。
adolphcocker 发表于 2024-1-13 12:36 | 显示全部楼层
该函数的一般使用格式如下(以标准库为例):

C
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
其中:

GPIOx 是要配置的GPIO端口。
GPIO_InitStruct 是指向一个包含所需配置信息的结构体指针,通常需要在调用前填充此结构体的各项参数,包括GPIO端口的模式(输入/输出)、速度、输出类型(推挽/开漏)、上拉/下拉等。
kmzuaz 发表于 2024-1-13 13:15 | 显示全部楼层
对于STM32F103系列来说,GPIO端口的默认状态通常是模拟输入(AIN),且没有内部上下拉或上拉电阻激活。如果需要改变这些设置以适应特定应用需求,如将其配置为通用输出、输入带上下拉、重映射到某个外设功能等,则必须通过GPIO_Init()函数或其他对应的库函数进行明确的配置。
mattlincoln 发表于 2024-1-13 13:28 | 显示全部楼层
STM32的GPIO端口会保持复位后的默认状态。
benjaminka 发表于 2024-1-13 14:01 | 显示全部楼层
在调用GPIO_Init()函数之前, 正确配置了RCC(复位和时钟控制)寄存器,以使GPIO配置生效。
loutin 发表于 2024-1-13 14:10 | 显示全部楼层
在GPIO_Init()函数执行后,相应的GPIO端口将被配置为您在CubeMX中设置的模式、速率等参数。
houjiakai 发表于 2024-1-13 16:55 | 显示全部楼层
这个函数主要接受两个参数:一个是配置引脚组(GPIO_TypeDef* GPIOx),另一个是配置的参数( GPIO_InitTypeDef* GPIO_InitStruct)。其中,GPIOx可以是A,B,C,D或者E,用来选择对应的GPIO外设;GPIO_InitStruct是一个指向结构GPIO_InitTypeDef的指针,该结构包含了所选GPIO外设的配置信息,如管脚号、速度和模式等。
1988020566 发表于 2024-1-14 22:26 | 显示全部楼层
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIO端口的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 初始化GPIOB端口0为推挽输出模式,速度为2MHz
GPIO_InitStructure.GPIOPin = GPIO_Pin_0;
GPIO_InitStructure.GPIOMode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIOSpeed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 初始化GPIOB端口1为开漏输出模式,速度为2MHz
GPIO_InitStructure.GPIOPin = GPIO_Pin_1;
GPIO_InitStructure.GPIOMode = GPIO_Mode_Out_OD; // 开漏输出
GPIO_InitStructure.GPIOSpeed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部