如何在现代 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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow