遇到客户反馈使用S32K1xx的LPIT模块时,发现一些与CVAL(当前定时器值)寄存器相关的问题。比如:LPIT设置两个相同配置的通道,调试时单步执行置位SETTEN这行代码以同时启动两个通道的定时器,从寄存器窗口居然看到两个通道的CVAL值差别很大。为了排除调试问题,还编写了一段函数在循环里持续读CVAL寄存器并比较前后两次值的大小,发现这个递减定时器居然会有后一刻值大于前一刻值的情况。虽然S32K1XXRM参考手册的48.1.5 Current timer value章节有相关的解释(当定时器运行时,读CVAL寄存器可能返回错误值。如果需要获取当前定时器值,请在LPIT中断服务函数里读取)。但这段简短的说明不足以解答客户的困惑,所以在此对这个问题稍加展开说明。