尊敬的专家:
我正在使用 TMS320F280025、我设置了两个中断函数、ADCA 中断为50us、CPUTimer1为100us。我设置 CPUTimer0并为其周期配置最大周期值、但我未启用 CPUTimer0的中断。我只需将 CPUTimer0从 429496729计数到0并保持 CPUTimer0周期计数、然后使用 CPUTimer0 两 个相邻中断之间的时间、例如最后 一个 ADCA 中断和当前 ADCA 中断之间的时间。我还使用 CPUTimer0来测试应用程序的执行时间。
当我测试 ADCA 中断和 CPUTimer1中断时、时间间隔正常、如下所示:

但是、当我测试由 CPUTimer1中断中的计数器创建的1ms 任务时、计数器计数到100、然后设置1ms 任务的标志、然后1ms 任务将通过识别 1ms 任务的标志来执行 main ()的 while (1)。但当我使用相同的方法执行时 测试1ms 任务的时间间隔、计数异常如下:

时间间隔测试代码如下所示:
T1ms_start_temp = T1ms_stop_temp;
T1ms_stop_temp = CPUTimer_getTimerCount (CPUTIME0_BASE);
if (t1ms_start_temp>=t1ms_stop_temp)
{
T1ms_Int_GAP = T1ms_start_temp - T1ms_stop_temp;
}
其他
{
T1ms_Int_GAP = 4294967295 - T1ms_stop_temp + T1ms_start_temp;
}
但是、当我 在 1ms 的任务中切换一个 GPIO 的电平时、时间在示波器中是正常的、如下所示:

当我将 CPUTimer1中断的间隔从100us 更改为1ms 时、CPUTimer1_Int_GAP 的值也 约为34400、只有当我将 CPUTimer1中断的间隔更改为小于500us 时、时间间隔值才开始正常。我想知道 CPUTimer0模块是否会受到其他模块的影响?为什么 当我测试长时间间隔应用时、它是否开始异常?您能否给出一些指导意见?