主题中讨论的其他器件:TM4C123
不知如何、 当在清除寄存 INT 处理程序内的 GPTMICR RWIC 后禁用边沿计数 GPTM0B 捕获中断并 重新启用定时器时、 先前禁用 的 INT 将被忽略。 下降沿计数模式 根据设计在超时清零 GPTMCTL_TBEN 位、似乎 设计操作 也 同时重置 CBMIM 内的 CBECINT 清零位。 换句话说、一旦 向下计数边沿计时器超时并进入 CBEINT 处理程序、我们无法有效地禁用它、因为重新启用计时器会自动重新设置 NVIC 中的 CBMIM 位。 该操作未记录!
即使 重复加载1000ms OneShot Delay 第1个到第2个处理程序 (重新启用 第1个处理程序中禁用的 CBMIM 位)后、也会发现问题的一个原因是边沿计数加速。 CBEINT 有目的地禁用 清零(CBMIM)来阻止 PWMENABLE 的较快边沿触发较低 NVIC 优先级分组中的 CCP0B 输入。
通常 情况下 、在第2个处理程序中再次设置 CBMIM 位的1000ms 延迟 似乎按预期工作、 直到 后来调用产生频率更高的 NVIC 中断的其他更高优先级的 INT 组。 在1000Hz 延迟内、CBMIM 位的自动重新启用是无法检测到的、直到 PWMENABLE 高优先级 INT 也加快了 GPTM0B 上的边沿计数。
