如何在现代 C++ 中使用 HAL_GPIO_Init() (STM32)

在现代 C++ 中,你可以直接初始化像 GPIO_InitTypeDef 这样的结构体,使代码更美观且不易出错。以下示例在备用功能 1 模式(TIM1 输出)下配置 STM32 的 PA8

gpio_init_struct.cpp
GPIO_InitTypeDef pinInit = {
  .Pin = GPIO_PIN_8,
  .Mode = GPIO_MODE_AF_PP,
  .Pull = GPIO_NOPULL,
  .Speed = GPIO_SPEED_FREQ_VERY_HIGH,
  .Alternate = GPIO_AF1_TIM1
};
HAL_GPIO_Init(GPIOA, &pinInit);

与旧的、更冗长的方式相比:

gpio_init_verbose.cpp
GPIO_InitTypeDef pinInit;
pinInit.Pin = GPIO_PIN_8;
pinInit.Mode = GPIO_MODE_AF_PP;
pinInit.Pull = GPIO_NOPULL;
pinInit.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
pinInit.Alternate = GPIO_AF1_TIM1;
HAL_GPIO_Init(GPIOA, &pinInit);

Check out similar posts by category: C/C++, Electronics, STM32