热门课程 - 发现知识之美

stm32开发板教程

作者: 孙老师 更新: 2025-11-27 阅读: 难度: 高级
学习工具

. STM32 GPIO 编程

GPIO(通用输入输出)是 STM32 最基本的接口,用于控制外部设备和读取输入信号。

GPIO 工作模式

  • 输入模式:浮空输入、上拉输入、下拉输入
  • 输出模式:推挽输出、开漏输出
  • 复用功能:外设功能引脚
  • 模拟模式:ADC/DAC 使用

GPIO 初始化

GPIO 配置
// 使能 GPIO 时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); // 配置 GPIO 参数 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; // PA5 引脚 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上拉下拉 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

LED 闪烁示例

LED 控制
#include "main.h" #include "stm32f1xx_hal.h" int main(void) { HAL_Init(); SystemClock_Config(); // 初始化 LED 引脚(PA5) __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = 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(GPIOA, &GPIO_InitStruct); while (1) { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 翻转 LED 状态 HAL_Delay(500); // 延时 500ms } }

按键输入检测

按键读取
// 配置按键引脚(PC13) __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式 GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉电阻 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 读取按键状态 if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET) { // 按键按下 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); } else { // 按键释放 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); }

常用 GPIO 函数

  • HAL_GPIO_Init() - 初始化 GPIO
  • HAL_GPIO_WritePin() - 设置输出电平
  • HAL_GPIO_ReadPin() - 读取输入电平
  • HAL_GPIO_TogglePin() - 翻转输出电平
  • HAL_GPIO_LockPin() - 锁定 GPIO 配置
提示: 这是一个重要的概念,需要特别注意理解和掌握。
注意: 这是一个常见的错误点,请避免犯同样的错误。

评论

登录 后发表评论