@@ -163,6 +163,7 @@ static void gpio_irq6(void)
163
163
}
164
164
165
165
extern uint32_t Set_GPIO_Clock (uint32_t port_idx );
166
+ extern void pin_function_gpiomode (PinName pin , uint32_t gpiomode );
166
167
167
168
int gpio_irq_init (gpio_irq_t * obj , PinName pin , gpio_irq_handler handler , uint32_t id )
168
169
{
@@ -267,15 +268,14 @@ void gpio_irq_free(gpio_irq_t *obj)
267
268
gpio_channel -> channel_gpio [gpio_idx ] = 0 ;
268
269
gpio_channel -> channel_pin [gpio_idx ] = 0 ;
269
270
270
- // Disable EXTI line
271
- pin_function (obj -> pin , STM_PIN_DATA ( STM_MODE_INPUT , GPIO_NOPULL , 0 ) );
271
+ // Disable EXTI line, but don't change pull-up config
272
+ pin_function_gpiomode (obj -> pin , STM_MODE_INPUT );
272
273
obj -> event = EDGE_NONE ;
273
274
}
274
275
275
276
void gpio_irq_set (gpio_irq_t * obj , gpio_irq_event event , uint32_t enable )
276
277
{
277
278
uint32_t mode = STM_MODE_IT_EVT_RESET ;
278
- uint32_t pull = GPIO_NOPULL ;
279
279
280
280
if (enable ) {
281
281
if (event == IRQ_RISE ) {
@@ -317,7 +317,7 @@ void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable)
317
317
}
318
318
}
319
319
320
- pin_function (obj -> pin , STM_PIN_DATA ( mode , pull , 0 ) );
320
+ pin_function_gpiomode (obj -> pin , mode );
321
321
}
322
322
323
323
void gpio_irq_enable (gpio_irq_t * obj )
0 commit comments