NXP MCU 技术论坛
直播中

王萍

7年用户 1316经验值
私信 关注
[问答]

如何找到HardFault的详细信息?

MCU是LPC5536JBD64,参考AN13497,当运行到_set_PSP(s_stackPointer)时,会报HardFault中断。请参考下面和附件,需要您的建议或如何找到 HardFault 的详细信息。
void JumpToImage(uint32_t addr)
{
     uint32_t sp;
     uint32_t 电脑;
    if(Bsp_Flash_Read(addr,(uint8_t *)&sp,4) == 0)
    {
        返回;
    }
    if(Bsp_Flash_Read(addr+4,(uint8_t *)&pc,4) == 0)
    {
        return;
    }
    if ((sp == 0xffffffff) || (pc == 0xffffffff)||(sp == 0x0)||(pc == 0x0))
    {
        返回;
    }

    typedef void(*app_entry_t)(void);

    静态 uint32_t s_stackPointer = 0;
    静态 uint32_t s_applicationEntry = 0;
    静态 app_entry_t s_application = 0;

    s_stackPointer = sp;
    s_applicationEntry = pc;
    s_application = (app_entry_t)s_applicationEntry;

    INT_ALL_DISABLE();//跳转前,关闭中断,防止跳转后主程序错误跳到中断处理
   
    //改变MSP和PSP
    __set_MSP(s_stackPointer);
  [color=\"#FF0000\"]  __set_PSP(s_stackPointer);

    SCB->VTOR = 地址;
    // 跳转到应用程序
    s_application();

    // 永远不应该到达这里。
    __NOP();

更多回帖

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