Fix gpio_set_mode masking

This commit is contained in:
Alexander Heldt
2025-01-01 12:19:50 +01:00
parent 152a9ad8a7
commit 2a1e3a41da
5 changed files with 9 additions and 9 deletions

View File

@@ -2028,8 +2028,8 @@ void gpio_write(uint16_t pin,
void gpio_set_mode(uint16_t pin, GPIO_MODE mode) {
struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8))));
int pn = (pin & 0b1111);
gpio->MODER &= ~(0x0011 << (pn * 2));
gpio->MODER |= (mode & 0b011) << (pn * 2);
gpio->MODER &= ~(0b11 << (pn * 2));
gpio->MODER |= (mode & 0b11) << (pn * 2);
}
void gpio_write(uint16_t pin,