最近在学习FreeRTOS,在应用过程经常遇到一些问题,最头疼的就是属于系统异常导致死机问题。比如HardFault_Handler,经常是堆栈分配的太小,外部中断与系统中断优先级分配不合理等都容
易出现这些问题。
后来在网上搜索了一下资料。然后去腾讯课堂看《正点原子手把手教你学freertos实时操作系统》的Cortex-M中断管理(上、下)。
其中有讲解到系统异常。看到清单描述的15项系统异常清单时发现,这些异常不就是工程中stm32f4xx_it.c里面实现中断吗。
所以本人想着给该文件里的每个中断函数加上一条打印语句,这样通过串口可以看到程序是不是进行了这些异常,这样也有助于排查问题。
不知道其他网友是否有更好的排查问题的方法
下面是给HardFault_Handler中断函数加一条打印语句。其他异常类似
/**
* @brief This function handles Hard Fault exception.
* @param None
* @retval None
*/
void HardFault_Handler(void)
{
printf("HardFault^
");
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
} |