diff --git a/lib/stm32/f1/gpio.c b/lib/stm32/f1/gpio.c index 4f7e663d..9ef60370 100644 --- a/lib/stm32/f1/gpio.c +++ b/lib/stm32/f1/gpio.c @@ -147,5 +147,8 @@ void gpio_port_config_lock(u32 gpioport, u16 gpios) reg32 = GPIO_LCKR(gpioport); /* Read LCKK. */ reg32 = GPIO_LCKR(gpioport); /* Read LCKK again. */ + /* Tell the compiler the variable is actually used. It will get optimized out anyways. */ + reg32 = reg32; + /* If (reg32 & GPIO_LCKK) is true, the lock is now active. */ } diff --git a/lib/stm32/f2/gpio.c b/lib/stm32/f2/gpio.c index 7a381204..fc7a5b69 100644 --- a/lib/stm32/f2/gpio.c +++ b/lib/stm32/f2/gpio.c @@ -135,5 +135,8 @@ void gpio_port_config_lock(u32 gpioport, u16 gpios) reg32 = GPIO_LCKR(gpioport); /* Read LCKK. */ reg32 = GPIO_LCKR(gpioport); /* Read LCKK again. */ + /* Tell the compiler the variable is actually used. It will get optimized out anyways. */ + reg32 = reg32; + /* If (reg32 & GPIO_LCKK) is true, the lock is now active. */ } diff --git a/lib/stm32/f4/gpio.c b/lib/stm32/f4/gpio.c index dea37208..e721f3f6 100644 --- a/lib/stm32/f4/gpio.c +++ b/lib/stm32/f4/gpio.c @@ -135,5 +135,8 @@ void gpio_port_config_lock(u32 gpioport, u16 gpios) reg32 = GPIO_LCKR(gpioport); /* Read LCKK. */ reg32 = GPIO_LCKR(gpioport); /* Read LCKK again. */ + /* Tell the compiler the variable is actually used. It will get optimized out anyways. */ + reg32 = reg32; + /* If (reg32 & GPIO_LCKK) is true, the lock is now active. */ } diff --git a/lib/stm32/nvic.c b/lib/stm32/nvic.c index cd823e11..c9cf48bc 100644 --- a/lib/stm32/nvic.c +++ b/lib/stm32/nvic.c @@ -57,7 +57,7 @@ u8 nvic_get_irq_enabled(u8 irqn) void nvic_set_priority(u8 irqn, u8 priority) { - NVIC_IPR(irqn / 4) |= (priority << ((irqn % 4) * 8)); + NVIC_IPR(irqn) = priority; } void nvic_generate_software_interrupt(u8 irqn)