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.

[参考译文] TM4C1294NCPDT:GPIO 边沿中断未清除

Guru**** 2460850 points
Other Parts Discussed in Thread: AFE4404

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/650622/tm4c1294ncpdt-gpio-edge-interrupt-not-cleared

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:AFE4404TM4C123

你好!

我正在将 Tiva tm4c123gh下午6 launchpad 的工作代码移植到 Tiva tm4c1294xl launchpad。

我在使用 afe4404的 i2c 接口进行轮询、但根据 tm4c1294勘误表、我已将 i2c 轮询代码更改为基于中断。

来自 afe4404的 ADC rdy 信号用作到 uC 的 GPIO 中断(引脚 P2)。在调试器上检查此代码时、p2 gpiointerrupt 不会被 GPIOIntClear 清除。引脚 ISR 和初始化位于随附的文件中。

让我知道是什么导致了 it.e2e.ti.com/.../i2c.docx

谢谢、此致、

尼利马

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在 AFE4404上的时钟速度是多少? 您是否获得多个中断(例如可能是由 ADC_RDY 信号上的振铃引起的中断)或连续中断?

    在哪里设置调试器中的断点以检查中断状态? 由于 Cortex-M 处理器中有一个写入缓冲器、因此在实际清除中断源之前可能需要几个时钟周期。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好!
    Afe4404内部时钟为4Mhz、PRF 设置为500Hz、具有5%的占空比。
    我不理解您对 multiple & continuous interrupt.pl.pl.pld.plmpld.mpl.I 没有用于检查引脚的示波器。
    根据我的观察结果、当调试电流进入 ISR、GPIO_RIS 和 MIS 寄存器 r 时、显示0x00000004。
    执行 intclear 命令后、NVIC_PEND2& NVIC_UNPEND2显示0x00004000以及 MIS & RIS = 0x00000004。
    在剩余的 ISR 代码执行后、它会在 ISR 开始时再次运行、NVIC_PEND2和 NVIC_UNPEND2变为0x00000000、而 MIS 和 RIS 始终= 0x00000004。
    在哪里设置调试器中的断点以检查中断状态?
    ---- 我在 ui32Status = GPIOIntStatus (GPIO_PORTP_BASE、TRUE)处进行检查;执行行和单步执行以检查 MIS 和 RIS 是否被清除。
    由于 Cortex-M 处理器中有一个写入缓冲器、因此在实际清除中断源之前可能需要几个时钟周期。
    代码是 tm4c123 (也是 Cortex-M 处理器)的工作代码。

    谢谢、此致、
    尼利马
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我怀疑问题是、在每秒转换500次的情况下、来自 ADC_RDY 的下一个边沿在单步执行时进入、因此您不会看到中断源被清除。