霸道板和烧写器:
基础理论:
- GPIO:通用目的输入、输出端口。
- STM32最多拥有GPIOA、…、GPIOG等七组端口,每组端口最多拥有PIN0、…、PIN15共16个引脚。
- STM32每个I/O端口都可自由编程,但I/O端口寄存器必须按照32位字被访问。
- STM32每个I/O端口都由7个寄存器来控制。
- STM32的I/O端口可由软件配置成8种模式。
端口模式:
- 推挽输出
- 开漏输出
- 推挽式复用功能
- 开漏式复用功能
- 模拟输入
- 浮空输入
- 下拉输入
- 上拉输入
GPIO初始化:
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable 使能时钟 */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level 设置输出引脚初始电平*/
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5, GPIO_PIN_SET);
/*Configure GPIO pin : PC13 定义Key2开关为输入,和下拉模式,最后把引脚写入对应端口寄存器中*/
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pin : PA0 与上同理*/
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PB0 PB1 PB5 设置三个小灯引脚为输出模式,推挽输出,低速时钟和把引脚写入寄存器中*/
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}