Here's some totally non-urgent stuff that could be improved sometime:
Refactor
Rewrite this whole thing in C++. The drivers are already object-oriented, so this shouldn't be too bad.
RTOS
Use some kind of RTOS to make it easier to manage things. Most of the system functions are scheduled by timer interrupts right now. It would make sense to put those in an RTOS task, and run the user application in a separate task.
ESP8266
The header between the buttons and the USB connector is meant for an ESP-01 module. It's connected to the STM32 over UART. It could be used as telemetry/control over WiFi. Even better, it could be used for the whole application. The STM32 handles all the low-level things, accepts control commands from the ESP, and sends the sensor data to it. The ESP firmware would be OTA updatable, so you don't need the cable!
Here's some totally non-urgent stuff that could be improved sometime:
Refactor
Rewrite this whole thing in C++. The drivers are already object-oriented, so this shouldn't be too bad.
RTOS
Use some kind of RTOS to make it easier to manage things. Most of the system functions are scheduled by timer interrupts right now. It would make sense to put those in an RTOS task, and run the user application in a separate task.
ESP8266
The header between the buttons and the USB connector is meant for an ESP-01 module. It's connected to the STM32 over UART. It could be used as telemetry/control over WiFi. Even better, it could be used for the whole application. The STM32 handles all the low-level things, accepts control commands from the ESP, and sends the sensor data to it. The ESP firmware would be OTA updatable, so you don't need the cable!