In this chapter, we introduced three different ways of implementing low-level drivers that interface with hardware peripherals in the MCU. Interrupts and polled- and DMA-based drivers were all covered through examples and their performance was analyzed and compared using SEGGER SystemView. We also covered three different ways that FreeRTOS can interact with ISRs: semaphores, queues, and stream buffers. Considerations for choosing between the implementation options were also discussed, as well as when it is appropriate to use third-party peripheral drivers (STM HAL) and when "rolling your own" is best.
To get the most out of this chapter, you're encouraged to run through it on actual hardware. The development board was chosen (in part) with the hope that you might have access to Arduino shields. After running through the examples, an excellent next step would...