目录
GPIO的作用
General Purpose Input Output,通用输入输出端口,通过写软件来控制
1、作为输出引脚,控制LED灯的亮灭
GPIO电平的控制:最终变成了向这个GPIO的硬件寄存器写入数据,硬件的状态会跟随寄存器的数据改变而改变。
GPIO配置
伪代码:
配置某一个IO口为通用推挽输出模式所需要的GPIO寄存器
{
1.对应位的MODER配置为01——————————通用输出
2.对应位的OTYPER配置为0——————————推挽输出
3.对应位的OSPEEDR配置为(01)—————25Mhz中速(这个不一定,按照自己的需求)
4.对应位的PUPDR配置为00——————————无上下拉
5.对应位的ODR 配置为0——————————输出低电平; 配置为1——————————输出高电平
}
GPIO输出流程
-
启用GPIO时钟:首先,需要启用相应GPIO端口的时钟,以便能够对GPIO进行配置和控制。通过在RCC寄存器中启用相应的GPIO时钟。
-
配置GPIO引脚:使用
GPIO_Init()
函数配置GPIO引脚的模式(输出模式)、速度、上拉/下拉等参数。通常需要指定引脚号、模式、速度、上拉/下拉方式等。 -
控制GPIO输出:使用
HAL_GPIO_WritePin()
函数控制GPIO的输出电平,可以将引脚设置为高电平(GPIO_PIN_SET)或低电平(GPIO_PIN_RESET)。 -
控制输出电平:根据应用需求,可以定时或根据条件更改GPIO引脚的输出电平,从而控制连接的外部设备或器件。
// 启用GPIO时钟
__HAL_RCC_GPIOB_CLK_ENABLE();
// 配置GPIO引脚
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_0; // 配置为输出引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 控制GPIO输出
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 设置引脚为高电平
用于将GPIO的输出状态与硬件寄存器的特定位相关联,以实现更底层的控制。可能需要使用指针和位操作来确切地控制寄存器的位。这个操作通常是在需要直接操作硬件寄存器的情况下进行,以执行更精细的控制或配置。