大家好、
时间精度存在问题。 我从 SDK6.20下载了 TI 驱动程序 GPIO 待机示例并做了一些更改、因此在 GPIO_0上有一个波形、265us 开启、938us 关闭。
void *mainThread(void *arg0)
{
GPIO_setConfig(CONFIG_GPIO_0, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);
while (1)
{
GPIO_write(CONFIG_GPIO_0,1);
usleep(265); //265us ON
GPIO_write(CONFIG_GPIO_0,0);
usleep(938); //938us OFF
}
}
我已经更改了 USSleep 功能的睡眠功能、以获得微秒精度。 但是、根据使用逻辑分析仪对 GPIO 的分析、GPIO 的这种计时精度似乎很差。

在这里、我应该有265us 的接通时间、我有384us、而不是938us 的接通时间、我有1052us。 这是114到119us 的差异! 为什么这些内容与插入到 usSleep 函数中的内容有如此大的不同?
接下来、我尝试调整函数中的输入值以匹配预期的实际值、因此我得出的值是 usleep (175)值(on)和 usleep (840)值(off)。 现在实际的信号更接近所需的值:
不过、从一个脉冲到另一个脉冲、计时似乎略有变化。 例如、我可以看到的导通脉冲的值从284到299us、变化幅度为16us。 关断期间也会发生同样的情况。
为什么会发生这种情况? 如何提高精度?