If you've been following along closely, you may have noticed a few things:
- STM HAL (the vendor-supplied hardware abstraction layer) is used for initial peripheral configuration. This is because HAL does a very good job of making peripheral configuration easy. It is also extremely convenient to use tools such as STM Cube to generate some boilerplate code as a point of reference when first interacting with a new chip.
- When it is time to implement details of interrupt-driven transactions, we've been making a lot of calls directly to MCU peripheral registers, rather than letting HAL manage transactions for us. There were a couple of reasons for this:
- We wanted to be closer to the hardware to get a better understanding of how things were really working in the system.
- Some of the setups weren't directly supported by HAL, such as...