Thread 中讨论的其他器件:MSP-EXP432E401Y、 SYSBIOS
我使用的 MSP-EXP432E401Y LaunchPad 套件的运行频率为120MHz、我使用 TI 驱动程序来运行周期性计时器以发送事件信号、或使用 ADC 以指定频率定期采样、这会自动使用周期性计时器。
当我直接使用一个周期定时器来发出一个事件信号(不涉及 ADC)并且我查看 GPTM 间隔加载寄存器(GPTMTAILR、a.k.a. TIMER_TAILR)、我注意到计数比我最初预期的值少1、直到我在《MSP432E4技术参考手册》中阅读此部分:
'当定时器递减计数并达到超时事件(0x0)时、定时器重新装载其初值
在下一个周期从 GPTMTnILR 和 GPTMTnPR 寄存器发出"
定时器确实会递减计数、如果0是计数的一部分、则间隔装载寄存器必须减少1。 例如、如果我想以8Hz 的频率向事件发出信号、那么间隔加载寄存器中看到的数字必须为:
120MHz/8Hz - 1 = 14999999 = 0xE4E1BF 、这就是我在 CCS 调试器中看到的结果
当我使用 ADC 以指定频率(例如10kHz)定期采样时、会产生混淆。 如果使用与上述相同的"少1个"计算、我得到:
120MHz/10kHz - 1 = 11999 = 0x2EDF
但是、我在 CCS 调试器的间隔加载寄存器中看到的值比这个值多1:0x2EE0! 当我查看计时器模式寄存器时、该计时器确实在递减计数、那么为什么该数字不是0x2EDF? 这可能是 TI 驱动程序软件中的错误、还是我在这里遗漏了什么?