From 725bd7d3e55bf2990445a4cf0950eed632c55092 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:19:50 +0100 Subject: [PATCH] Fix `gpio_set_mode` masking --- src/gpio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gpio.c b/src/gpio.c index afed8f4..b92dd26 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -6,8 +6,8 @@ void gpio_set_mode(uint16_t pin, GPIO_MODE mode) { struct gpio *gpio = GPIO(PINPORT(pin)); // GPIO port address int pn = PINNUM(pin); // Pin number - gpio->MODER &= ~(0x0011 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits - gpio->MODER |= (mode & 0b011) << (pn * 2); // Set new mode. Each pin uses 2 bits + gpio->MODER &= ~(0b11 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits + gpio->MODER |= (mode & 0b11) << (pn * 2); // Set new mode. Each pin uses 2 bits } void gpio_write(uint16_t pin, bool val) {