Disable internal I2C pull-up resistors, since we need to use external ones
Switch from interrupt-based I2C HAL APIs to DMA-based ones. This one change makes a huge reliability improvement, which is surprising (makes me wonder if the interrupt-based HAL APIs are buggy)
Increase system clock speed just in case
Increase software timer task priority. This makes sure that pressing the flag button always updates the status flag, and that the green status LED on the Nucleo always flashes at 1 Hz. (Previously, the software timer task accidentally had the lowest priority in the system, so if there were any non-ideal I2C interactions making the IMU threads enter a recovery state, the software timers would not get serviced. This was especially noticeable when the IMUs were not communicating properly, for example, you could press the flag button and you'd see the status flag go to 1, but it would never go back down to 0 because the software timer thread was not being serviced. All this is fixed now)
Major changes: