Browse Source

[bluetrum] add gpio input nopull

greedyhao 3 years ago
parent
commit
9d27d8c94b

+ 3 - 0
bsp/bluetrum/libraries/hal_drivers/drv_gpio.c

@@ -128,6 +128,9 @@ static void ab32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
     switch (mode)
     {
     case PIN_MODE_INPUT:
+        gpio_init.pull = GPIO_NOPULL;
+        gpio_init.dir = GPIO_DIR_INPUT;
+        break;
     case PIN_MODE_INPUT_PULLUP:
         gpio_init.pull = GPIO_PULLUP;
         gpio_init.dir = GPIO_DIR_INPUT;

+ 4 - 0
bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_gpio.c

@@ -72,12 +72,16 @@ void hal_gpio_init(hal_sfr_t gpiox, gpio_init_t gpio_init)
             switch (gpio_init->pull)
             {
             case GPIO_PULLUP:
+                gpiox[GPIOxPD] &= ~BIT(iocurrent);
                 gpiox[GPIOxPU] |= BIT(iocurrent);
                 break;
             case GPIO_PULLDOWN:
+                gpiox[GPIOxPU] &= ~BIT(iocurrent);
                 gpiox[GPIOxPD] |= BIT(iocurrent);
                 break;
             case GPIO_NOPULL:
+                gpiox[GPIOxPU] &= ~BIT(iocurrent);
+                gpiox[GPIOxPD] &= ~BIT(iocurrent);
             default:
                 break;
             }