嵌入式学习小组
直播中

陈伟

7年用户 1463经验值
私信 关注

M451如何重写HardFault函数?

M451如何重写HardFault函数?

在 M451 BSP 里 M451BSP\Library\StdDriver\src\retarget.c 修改 Hard_Fault_Handler()

楼上正解。修该那个函数就行了。

回帖(1)

王莉

2024-4-24 18:01:27
重写 HardFault 函数需要先定义一个函数指针,然后将函数指针指向新的 HardFault 函数,最后需要重新配置向量表以使新的 HardFault 函数生效。具体代码如下:

```
typedef void (*pFaultHandler)(void);

void myHardFaultHandler(void)
{
    // Your code here
}

void* myHardFaultHandlerPtr = (void*)myHardFaultHandler;

__ASM void HardFault_Handler(void)
{
    TST LR, #4
    ITE EQ
    MRSEQ R0, MSP
    MRSNE R0, PSP
    MOV R1, LR
    B (pFaultHandler)(myHardFaultHandlerPtr)
}
```

以上代码会将 HardFault 函数指向 myHardFaultHandler 函数。在 myHardFaultHandler 函数中,你可以编写自己的错误处理逻辑。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分