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_applica
tionEntry = 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();
0