Lesson 54 of a modern embedded systems programming course covers the QV non-preemptive kernel from the QPC active object framework. The lesson reviews shortcomings of a simple super loop scheduler (lost events, global variable race conditions, spaghetti logic) and shows how QV addresses them using event queues and hierarchical state machines inside active objects. A step-by-step walkthrough demonstrates integrating QPC into an STM32 Cube IDE project on a Nucleo C031C6 board, including directory setup, include paths, resolving SysTick handler conflicts, and merging CubeMX-generated code with QP application code. Logic analyzer traces illustrate priority inversion inherent to non-preemptive scheduling, idle callback behavior, and low-power sleep mode in release builds.

28m watch time
1 Impression