Use ODR instead of IDR to toggle an output GPIO

IDR represents the level on pin input while ODR is the value requested by the
programmer. This makes a difference for example when using the output as open
drain.
This commit is contained in:
Nicolas Schodet 2012-05-31 00:08:23 +02:00
parent 7011d47c70
commit 12a73ce052
2 changed files with 2 additions and 2 deletions

View File

@ -111,7 +111,7 @@ u16 gpio_get(u32 gpioport, u16 gpios)
void gpio_toggle(u32 gpioport, u16 gpios)
{
GPIO_ODR(gpioport) = GPIO_IDR(gpioport) ^ gpios;
GPIO_ODR(gpioport) ^= gpios;
}
u16 gpio_port_read(u32 gpioport)

View File

@ -111,7 +111,7 @@ u16 gpio_get(u32 gpioport, u16 gpios)
void gpio_toggle(u32 gpioport, u16 gpios)
{
GPIO_ODR(gpioport) = GPIO_IDR(gpioport) ^ gpios;
GPIO_ODR(gpioport) ^= gpios;
}
u16 gpio_port_read(u32 gpioport)