Arm LPC1114重定向中断处理

Arm LPC1114重定向中断处理,arm,keil,lpc,cortex-m,Arm,Keil,Lpc,Cortex M,LPC1114引导加载程序(位置0-0x2000)和用户应用程序(位置0x2000-0x6000),其中引导加载程序使用轮询,用户应用程序使用中断 说明- 引导加载程序运行systick轮询ok,根据systick计数超时,并在0x2000跳转到用户应用程序,其中使用systick中断 问题- 如果在跳转到用户应用程序之前在引导加载程序中调用了_disable_irq(),则用户应用程序运行正常(不按预期使用中断,但至少它运行)。 如果在用户应用程序跳转之前没有禁用irq(),则用户应用程序将失

LPC1114引导加载程序(位置0-0x2000)和用户应用程序(位置0x2000-0x6000),其中引导加载程序使用轮询,用户应用程序使用中断

说明- 引导加载程序运行systick轮询ok,根据systick计数超时,并在0x2000跳转到用户应用程序,其中使用systick中断

问题-
如果在跳转到用户应用程序之前在引导加载程序中调用了_disable_irq(),则用户应用程序运行正常(不按预期使用中断,但至少它运行)。
如果在用户应用程序跳转之前没有禁用irq(),则用户应用程序将失败,并在startup\u LPC11xx.s的默认\u处理程序中结束


添加了确定中断源的代码-这是一个硬故障

在我看来,您的代码中的某些(可能全部)中断没有得到正确的处理。既然已经提出了这个问题,但没有提供真正的代码,那么这里只能给出一般性的建议

到目前为止可以看到的情况是,在启用中断后,一些事件会导致中断,程序计数器跳到无处/随机地址,系统出现故障。问题的另一个原因可能是处理不正确,但同样,必须进行代码分析,这是您没有提供的

为了缩小问题的范围,我建议将整个代码拆分为多个部分,使其尽可能简单,并且只使用最少的代码和至少一个中断启用来运行-确保可以为中断生成事件


您是否有调试器或与设备的串行通信?如果您遇到这种情况,您需要分析IRQ状态寄存器-最有可能在IRQ发生后立即读取它。

请添加代码以显示如何定义和启用应用程序中的中断。