Reason for HardFault_Handler ?

I just want to know why HardFault_Handler? And how to prevent it from occure? I used STM32F405 controller and port free RTOS. In my project HardFault_Handler occurred randomly after higher priority task invoked. Is this issue regarding stack size or Priority of Task?

Reason for HardFault_Handler ?

There are lots of reasons you might end up in the hard fault handler (read the ARM documentation to see what could trigger these), and as you are the only one with the application in front of you, I’m afraid only you can determine how and why you get there – but here are some links that will help: First, debugging a hard fault: http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html Second, trapping stack overflows, if that were the cause: http://www.freertos.org/Stacks-and-stack-overflow-checking.html Third, making use of configASSERT() to find configuration or user errors: http://www.freertos.org/a00110.html#configASSERT Fourth, general “what could be wrong” FAQ page: http://www.freertos.org/FAQHelp.html