Hi Carmine, congrats on the kid and on the 2nd edition of the book.
In general, I would suggest adding to your disciplined system of labeling e.g. Table 1.1, Figure 3.2, another category of e.g. “Code Excerpt 7.1” for example (or “Snippet”, or whatever). This will help in case you or your readers/forum users want to refer unambiguously to code by name instead of “the above code” etc.
Anyway, in the snippet “Filename: src/main-ex2.c” in 7.2.1, a rewrite of the code that toggles the onboard LED when the user presses the onboard button, there is no explanation of why you are conjuring up GPIO 12. After study, I recognized that this is like a latch, and indeed does toggle the LED, but you could maybe save other readers some confusion by explaining that GPIO 12 is not used as such, you are just calling the EXTI_IRQHandler with another pin on the same EXTI line to get the function to clear the bit. It’s a trick, and won’t be clear to all. Even if the result is clear, the conclusion that this is an “off-label prescription” use of the call to HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12) takes some inferential reasoning that beginners won’t have the perspective to clinch.