diff --git a/bspMCU/bsp_pin.c b/bspMCU/bsp_pin.c index f2a95cd..204a522 100644 --- a/bspMCU/bsp_pin.c +++ b/bspMCU/bsp_pin.c @@ -48,3 +48,13 @@ void delay_us(int nus) #endif } +void hard_fault_handler_c(unsigned int *hardfault_args) +{ + unsigned int stacked_pc = hardfault_args[6]; // 程序计数器 + unsigned int stacked_psr = hardfault_args[7]; // 状态寄存器 + uint32_t sp = (uint32_t)hardfault_args; + + // 打印寄存器现场 + log_a("====== HardFault Detected ======\nPC = 0x%08X, PSR= 0x%08X\nHFSR = 0x%08X\tCFSR = 0x%08X\nBFAR = 0x%08X\tMMFAR= 0x%08X\nsp = 0x%08X\n", + stacked_pc, stacked_psr, SCB->HFSR, SCB->CFSR, SCB->BFAR, SCB->MMFAR, sp); +}