From c49a790b19b3180d49a49777474df61c37db2ed6 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Thu, 10 Sep 2026 14:03:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=B8=BB=E7=BA=BF=E5=BE=85=E5=90=88?= =?UTF-8?q?=E3=80=91=E5=A2=9E=E5=8A=A0STM32=E7=94=A8=E4=BA=8E=E5=9C=A8hard?= =?UTF-8?q?=5Ffault=E5=90=8E=E6=89=93=E5=8D=B0=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bspMCU/bsp_pin.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/bspMCU/bsp_pin.c b/bspMCU/bsp_pin.c index 95ca770..ffa53cd 100644 --- a/bspMCU/bsp_pin.c +++ b/bspMCU/bsp_pin.c @@ -47,3 +47,28 @@ void delay_us(int nus) }; #endif } + +void hard_fault_handler_c(unsigned int *hardfault_args) +{ + unsigned int stacked_r0 = hardfault_args[0]; + unsigned int stacked_r1 = hardfault_args[1]; + unsigned int stacked_r2 = hardfault_args[2]; + unsigned int stacked_r3 = hardfault_args[3]; + unsigned int stacked_r12 = hardfault_args[4]; + unsigned int stacked_lr = hardfault_args[5]; // 链接寄存器 + unsigned int stacked_pc = hardfault_args[6]; // 程序计数器 + unsigned int stacked_psr = hardfault_args[7]; // 状态寄存器 + + // 打印寄存器现场 + log_a("====== HardFault Detected ======\r\n"); + log_a("R0 = 0x%08X, R1 = 0x%08X\r\n", stacked_r0, stacked_r1); + log_a("R2 = 0x%08X, R3 = 0x%08X\r\n", stacked_r2, stacked_r3); + log_a("R12= 0x%08X, LR = 0x%08X\r\n", stacked_r12, stacked_lr); + log_a("PC = 0x%08X, PSR= 0x%08X\r\n", stacked_pc, stacked_psr); + + // 打印故障状态寄存器 + log_a("HFSR = 0x%08X\r\n", SCB->HFSR); + log_a("CFSR = 0x%08X\r\n", SCB->CFSR); + log_a("BFAR = 0x%08X\r\n", SCB->BFAR); + log_a("MMFAR= 0x%08X\r\n", SCB->MMFAR); +}