From b1cf958fd200de767b40144a9452869e8f5d9615 Mon Sep 17 00:00:00 2001 From: zhji Date: Sat, 15 Mar 2025 16:15:00 +0800 Subject: [PATCH] [feat] add gpio_init_simple function --- driver/inc/gpio.h | 1 + driver/src/gpio.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/driver/inc/gpio.h b/driver/inc/gpio.h index 8375474..ba29946 100644 --- a/driver/inc/gpio.h +++ b/driver/inc/gpio.h @@ -106,6 +106,7 @@ void gpio_over_in_set(uint8_t pin, uint8_t over); void gpio_over_irq_set(uint8_t pin, uint8_t over); void gpio_init(struct gpio_cfg_s *cfg); +void gpio_init_simple(uint8_t pin, uint8_t func, uint8_t pulldown, uint8_t pullup); uint8_t gpio_irq_get_raw_status(uint8_t pin, uint8_t irq); void gpio_irq_raw_status_clear(uint8_t pin, uint8_t irq); diff --git a/driver/src/gpio.c b/driver/src/gpio.c index c7d7463..25d902b 100644 --- a/driver/src/gpio.c +++ b/driver/src/gpio.c @@ -207,6 +207,27 @@ void gpio_init(struct gpio_cfg_s *cfg) putreg32(val, addr + offset); } +void gpio_init_simple(uint8_t pin, uint8_t func, uint8_t pulldown, uint8_t pullup) +{ + struct gpio_cfg_s cfg = { + .pin = pin, + .sio_dir = GPIO_SIO_DIR_IN, + .funcsel = func, + .over_out = GPIO_OVER_OUT_PERIPHERAL, + .over_oe = GPIO_OVER_OE_PERIPHERAL, + .over_in = GPIO_OVER_IN_PERIPHERAL, + .over_irq = GPIO_OVER_IRQ_NORMAL, + .slew_rate = GPIO_PADS_SLEW_RATE_SLOW, /* slew rate control, slow or fast */ + .schmitt = ENABLE, /* enable or disable schmitt */ + .pull_down = pulldown, /* enable or disable pull down */ + .pull_up = pullup, /* enable or disable pull up */ + .drive = GPIO_PADS_DRIVE_STRENGTH_4MA, /* drive strength */ + .ie = DISABLE, /* enable or disable input */ + .od = DISABLE, /* output disable, has priority over output enable from peripherals */ + }; + gpio_init(&cfg); +} + uint8_t gpio_irq_get_raw_status(uint8_t pin, uint8_t irq) { uint32_t addr;