Hello,
I want to implement the interrupt functionality and based on my understanding I can implement it using GPIO or ISR function.
In case of GPIO (APIs here):
int gpio_pin_configure(const struct device *port, gpio_pin_t pin, gpio_flags_t flags) int gpio_pin_interrupt_configure(const struct device *port, gpio_pin_t pin, gpio_flags_t flags) static inline void gpio_init_callback(struct gpio_callback *callback, gpio_callback_handler_t handler, gpio_port_pins_t pin_mask)¶ static inline int gpio_add_callback(const struct device *port, struct gpio_callback *callback)¶
For ISR function (APIs here)
#define MY_DEV_IRQ 24 /* device uses IRQ 24 */
#define MY_DEV_PRIO 2 /* device uses interrupt priority 2 */
/* argument passed to my_isr(), in this case a pointer to the device */
#define MY_ISR_ARG DEVICE_GET(my_device)
#define MY_IRQ_FLAGS 0 /* IRQ flags */
void my_isr(void *arg)
{
... /* ISR code */
}
void my_isr_installer(void)
{
...
IRQ_CONNECT(MY_DEV_IRQ, MY_DEV_PRIO, my_isr, MY_ISR_ARG, MY_IRQ_FLAGS);
irq_enable(MY_DEV_IRQ);
...
}
Then, based which features can I use GPIO instead ISR functions?
Thank in advance.