6#ifdef HAL_GPIO_MODULE_ENABLED
10#if defined(STM32F0) || defined(STM32G0) || defined(STM32L0)
14#elif defined(STM32WB0)
15 STM32_GPIO_EXTI_GPIOA,
16 STM32_GPIO_EXTI_GPIOB,
24 STM32_GPIO_EXTI_10_15,
26 STM32_GPIO_EXTI_NUMBER
29stm32_gpio_exti_t STM32_GPIO_EXTI_GetID(uint16_t pin);
36 STM32GPIO(GPIO_TypeDef* port, uint16_t pin, IRQn_Type irq = NonMaskableInt_IRQn)
37 : port_(port), pin_(pin), irq_(irq)
39 if (irq_ != NonMaskableInt_IRQn)
41 map[STM32_GPIO_EXTI_GetID(pin)] =
this;
45 bool Read() {
return HAL_GPIO_ReadPin(port_, pin_) == GPIO_PIN_SET; }
49 HAL_GPIO_WritePin(port_, pin_, value ? GPIO_PIN_SET : GPIO_PIN_RESET);
55 ASSERT(irq_ != NonMaskableInt_IRQn);
56 HAL_NVIC_EnableIRQ(irq_);
62 ASSERT(irq_ != NonMaskableInt_IRQn);
63 HAL_NVIC_DisableIRQ(irq_);
69 GPIO_InitTypeDef gpio_init = {};
71 HAL_GPIO_DeInit(port_, pin_);
78 gpio_init.Mode = GPIO_MODE_INPUT;
81 gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
84 gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
87 gpio_init.Mode = GPIO_MODE_IT_FALLING;
90 gpio_init.Mode = GPIO_MODE_IT_RISING;
93 gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
100 gpio_init.Pull = GPIO_NOPULL;
103 gpio_init.Pull = GPIO_PULLUP;
106 gpio_init.Pull = GPIO_PULLDOWN;
110 gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
112 HAL_GPIO_Init(port_, &gpio_init);
114 return ErrorCode::OK;
117 static STM32GPIO* map[STM32_GPIO_EXTI_NUMBER];
通用输入输出(GPIO)接口类。General Purpose Input/Output (GPIO) interface class.
@ OUTPUT_PUSH_PULL
推挽输出模式。Push-pull output mode.
@ RISING_INTERRUPT
上升沿中断模式。Rising edge interrupt mode.
@ FALL_RISING_INTERRUPT
双沿触发中断模式。Both edge interrupt mode.
@ OUTPUT_OPEN_DRAIN
开漏输出模式。Open-drain output mode.
@ FALL_INTERRUPT
下降沿中断模式。Falling edge interrupt mode.
@ NONE
无上拉或下拉。No pull-up or pull-down.
@ DOWN
下拉模式。Pull-down mode.
bool Read()
读取 GPIO 引脚状态。Reads the GPIO pin state.
ErrorCode SetConfig(Configuration config)
配置 GPIO 引脚参数。Configures the GPIO pin settings.
ErrorCode Write(bool value)
写入 GPIO 引脚状态。Writes the GPIO pin state.
ErrorCode EnableInterrupt()
使能 GPIO 引脚中断。Enables the GPIO pin interrupt.
ErrorCode DisableInterrupt()
禁用 GPIO 引脚中断。Disables the GPIO pin interrupt.
存储 GPIO 配置参数的结构体。Structure storing GPIO configuration parameters.
Pull pull
GPIO 上拉/下拉配置。GPIO pull-up/pull-down configuration.
Direction direction
GPIO 引脚方向。GPIO pin direction.