![]() |
ARMEBS4
revision-26.06.2015
|
![]() |
Enumerations | |
enum | gpio_irq_mode_e { GPIO_IRQ_MODE_DISABLED, GPIO_IRQ_MODE_EDGE_FALLING, GPIO_IRQ_MODE_EDGE_RISING, GPIO_IRQ_MODE_EDGE_BOTH, GPIO_IRQ_MODE_LEVEL_LOW, GPIO_IRQ_MODE_LEVEL_HIGH } |
Functions | |
status_e | gpio_irq_setup (const struct gpio_t *gpio, uint32_t(*handler)(const struct gpio_t *gpio), enum gpio_irq_mode_e mode, uint32_t prio) |
Setup interrupt on GPIO. More... | |
status_e | gpio_irq_disable (const struct gpio_t *gpio) |
Disable a gpio interrupt. More... | |
status_e | gpio_irq_restore (const struct gpio_t *gpio) |
Restore a gpio interrupt. More... | |
enum gpio_irq_mode_e |
Gpio IRQ modes
Definition at line 22 of file stm32_gpio_irq.h.
status_e gpio_irq_setup | ( | const struct gpio_t * | gpio, |
uint32_t(*)(const struct gpio_t *gpio) | handler, | ||
enum gpio_irq_mode_e | mode, | ||
uint32_t | prio | ||
) |
Setup interrupt on GPIO.
gpio | the gpio to use (will be configured) |
handler | handler's return value: see below |
mode | gpio_irq_mode_e of the interrupt |
prio | the priority for the NVIC |
When using GPIO_IRQ_MODE_LEVEL_LOW and GPIO_IRQ_MODE_LEVEL_HIGH, the handler will be called continuously unless the pin level change to the inactive level. Deferred processing is possible, the handler can return true, and the loop will break. The deferred handler MUST call gpio_irq_restore() after the interrupt has been handled to restore normal behavior.
Definition at line 217 of file stm32_gpio_irq.c.
References ARRAY_SIZE, gpio_t::ctrl, ERROR_BAD_PARAM, ERROR_BAD_SWITCH, EXTI_InitTypeDef::EXTI_Line, EXTI_InitTypeDef::EXTI_LineCmd, EXTI_InitTypeDef::EXTI_Mode, EXTI_InitTypeDef::EXTI_Trigger, gpio_get(), GPIO_IRQ_MODE_DISABLED, GPIO_IRQ_MODE_EDGE_BOTH, GPIO_IRQ_MODE_EDGE_FALLING, GPIO_IRQ_MODE_EDGE_RISING, GPIO_IRQ_MODE_LEVEL_HIGH, GPIO_IRQ_MODE_LEVEL_LOW, gpio_setup(), NO_ERROR, gpio_t::nr, NVIC_InitTypeDef::NVIC_IRQChannel, NVIC_InitTypeDef::NVIC_IRQChannelCmd, NVIC_InitTypeDef::NVIC_IRQChannelPreemptionPriority, and NVIC_InitTypeDef::NVIC_IRQChannelSubPriority.
Referenced by bsp_set_button_irq_handler(), and gpio_irq_disable().
Disable a gpio interrupt.
gpio | the gpio to use |
Definition at line 44 of file stm32_gpio_irq.c.
References GPIO_IRQ_MODE_DISABLED, and gpio_irq_setup().
Restore a gpio interrupt.
gpio | the gpio to use |
Definition at line 183 of file stm32_gpio_irq.c.
References ERROR_BAD_SWITCH, gpio_get(), GPIO_IRQ_MODE_EDGE_BOTH, GPIO_IRQ_MODE_EDGE_FALLING, GPIO_IRQ_MODE_EDGE_RISING, GPIO_IRQ_MODE_LEVEL_HIGH, GPIO_IRQ_MODE_LEVEL_LOW, NO_ERROR, and gpio_t::nr.