A memory protection unit (MPU) continuously monitors memory access at a hardware level to make absolutely certain that only legal memory accesses are occurring; otherwise, an interrupt is raised and immediate action can be taken. This allows many common errors (which might otherwise go unnoticed for a period of time) to be immediately detected.
Problems like stack overflows that make a stack flow into the memory space reserved for another task are immediately caught when using an MPU, even if they can't be detected by vApplicationStackOverflowHook. Buffer overflows and pointer errors are also stopped dead in their tracks when an MPU is utilized, which makes for a more robust application.
The STM32F767 MCU includes an MPU. In order to make use of it, the MPU-enabled port must be used: GCC\ARM_CM4_MPU. This way, restricted tasks can be created...