【问题标题】:LPC1114 re-directed interrupt handlingLPC1114重定向中断处理
【发布时间】:2014-09-07 08:10:19
【问题描述】:

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

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

问题-
如果在跳转到用户应用程序之前在引导加载程序中调用了 __disable_irq(),则用户应用程序运行正常(未按预期使用中断,但至少它运行)。
如果在用户应用跳转前没有__disable_irq(),用户应用失败,在startup_LPC11xx.s 中的default_handler 结束。

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

【问题讨论】:

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

标签: arm keil lpc cortex-m


【解决方案1】:

在我看来,您没有正确处理代码中的某些(可能是全部)中断。至于问题已经问过了,没有提供真实的代码,这里只能是一般性的建议。

到目前为止可以看到的情况是,在您启用中断后,某些事件会导致中断,程序计数器跳转到无处/随机地址并且系统失败。该问题的另一个原因可能是处理不正确,但同样,它必须采取分析代码,而您没有提供。

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

您是否有调试器或正在与设备进行串行通信?如果您对此感到困惑,则需要分析 IRQ 状态寄存器 - 最有可能在 IRQ 发生后立即读取它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2010-12-20
    • 2013-07-03
    相关资源
    最近更新 更多