This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL2-RM57L:复位中断

Guru**** 1796780 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/575090/launchxl2-rm57l-resetting-an-interrupt

器件型号:LAUNCHXL2-RM57L

我已经成功生成了一个中断、但我在重置中断时遇到了问题。 我让它为 ISR 提供服务、但当我尝试重新创建事件以触发中断时、它不会进入 ISR;我需要复位处理器以使其再次工作。 现在、我只使用两个按钮来触发中断(GIOB4和 GIOB5)来触发 LED (GIOB6和 GIOB7)。 为了尝试清除中断标志、我将清除 GIOFLG 寄存器(写入0xFF00来清除 GIOB 位)、并清除 VIM 模块 INTREQ0寄存器的位9 (位9、因为这是 GIO 高优先级中断连接到的中断)。

我可能会错过一些非常小和愚蠢的东西。 您提供的任何信息都很有用。


谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、您还退出了 ISR 例程、保留 IRQ 模式、并返回到 CPSR 的"i"位为0的用户或系统模式?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、在触发中断之前、CPSR 中的值是0x08000FF4 (我猜"i"位是位6)、因此"I"位是1。 触发后、ISR 运行(LED 打开)、并返回主循环。 返回时的值为0x08000C04 ("I"位为0)。

    我是否只需要再次设置"i"位或其他设置? 我刚刚开始使用这款处理器(对于嵌入式产品而言相对较新)、因此我不熟悉 CPSR。

    -最大值
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、所以我在 ISR 结束时重新运行_enable_IRQ ()函数。 这是最好/最可靠的方法、还是我应该以不同的方式来做?