// the find
lhr-solar/Embedded-Sharepoint
LHRs shared embedded firmware development
Shared embedded firmware library for a university solar car team's STM32-based PCBs. It provides BSP drivers (CAN, UART, ADC), FreeRTOS integration, FatFS, a moving average filter, WS2812B LED driver, and a DBC-based CAN spec toolchain. The intended consumer is another repo that pulls this in as a git submodule.
The CAN toolchain is the most interesting part — DBC files, a Python header generator, duplicate ID detection in CI, and a small web UI for browsing the CAN spec. That's a real workflow, not just a README promise. The per-MCU config file that lists which BSP modules to disable (`BSP_DISABLE=CAN UART`) is a clean way to handle peripheral availability differences across chip variants without ifdef soup. CI compiles every test against every supported port via a Python matrix script, so broken ports don't silently rot. Nix flake for the dev environment means a new team member can reproduce the exact toolchain without fighting ARM gcc version mismatches.
Five stars says this is effectively a closed internal project — there's no versioning or release strategy, so any repo using it as a submodule is pinned to HEAD and at risk of silent breakage whenever the team refactors. The BSP layer is thin wrappers around ST HAL with minimal error handling — HAL_StatusTypeDef return values are frequently ignored in the driver sources, which in a car is a problem. FreeRTOS is vendored at what looks like a CM4F-only port despite the repo targeting F4, L4, and G4 families; the G4 is also Cortex-M4 so it happens to work, but the port choice is implicit rather than documented. No hardware-in-the-loop testing — the CI only compiles, it doesn't run anything, so timing-sensitive peripheral bugs (CAN bit timing, DMA transfers) won't be caught until someone flashes a board.