Why does changing the floating-point ABI from hard to soft, stop HAL_Delay returning?
Basic project with the defaults from the config wizard for STM32L4S7
Add into the main while loop:
declared_volatile_variable += 1;
HAL_Delay(1000);
Set a break point on the addition and debug. Every second, the breakpoint triggers, then continue - all is well.
Change the Floating-point ABI in the project properties, C/C++ Build -> Settings -> Tool Settings -> MCU Settings, from "Hardware implementation" to "Software Implementation".
Rebuild, start debugging. The breakpoint triggers on the first addition, continue, then it gets stuck in HAL_Delay and never returns.
Can anyone explain why this would happen?