请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C1294NCPDT Thread 中讨论的其他器件:LM3S1968
我正在为一个类开发一些示例代码、遇到了我不希望看到的情况。
我从 LM3S1968移植了一些 C 语言的定时器中断代码、该代码直接访问 GPTM 寄存器、而不是通过 PDL 访问。 Timer2A 超时中断处理程序中的最后一行执行此操作:
TIMER2_ICR_R = TIMER_ICR_TATOCINT;
我发现的是中断触发一次、但在退出处理程序后立即再次触发。 在处理程序的第一条指令上设置断点会显示 TIMER_MIS 和 TIMER_RIS 在第一个中断上都有0x01、在第二个中断上都有0x0。 如果我在写入 ICR 寄存器后插入几条指令、则不会产生第二个中断。
我检查了数据表的 GPTM、NVIC 和异常模型部分、但在清除标志后没有看到任何关于需要额外时钟周期的警告。
我是否在别处遗漏了一些东西?