板子:
TDC1000-C2000EVM
环境:
CCS8.1.0, XDS200
代码如下,目的是周期性反转两个IO口(GPIO22 & GPIO20)的电平
for(;;)
{
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
DELAY_US(0.1);
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
//——————————–//
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
//——————————–//
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
}
问题:
尝试更改上述代码第五行加黑代码( DELAY_US(0.1); )时出现下述问题
(下图中黄色为GPIO22输出,蓝色为GPIO20输出 )
1)去掉该行代码时,输出结果如下图:
GPIO22变换后,GPIO20立即变化,符合代码。
但是代码中GPIO20与GPIO22的DELAY_US(0.3)明显不对,图中的延时已经大约为9us了。

2)DELAY_US(0.1)时
此时GPIO20(蓝色曲线)反转存在明显延迟,但后两个GPIO22反转正常,无延时。

3)DELAY_US(1)
此时,2)中的GPIO20反转间的延时消失,但是DELAY_US(1)对应的延时时间为9us左右。

4)DELAY_US(10)
DELAY_US(10)对应的时间进阶20us。

疑惑:
1)DELAY_US()的延时时间与代码不符合
2)GPIO20为何会出现延迟反转的现象(第二张图)
谢谢
mangui zhang:你看看delay_us的传递函数数据类型
板子:
TDC1000-C2000EVM
环境:
CCS8.1.0, XDS200
代码如下,目的是周期性反转两个IO口(GPIO22 & GPIO20)的电平
for(;;)
{
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
DELAY_US(0.1);
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
//——————————–//
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
//——————————–//
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPASET.bit.GPIO22 = 1; // SET TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // Clear TDC1000 trigger
GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // Clear ENABLE
GpioDataRegs.GPASET.bit.GPIO20 = 1; // SET ENABLE
DELAY_US(0.3);
}
问题:
尝试更改上述代码第五行加黑代码( DELAY_US(0.1); )时出现下述问题
(下图中黄色为GPIO22输出,蓝色为GPIO20输出 )
1)去掉该行代码时,输出结果如下图:
GPIO22变换后,GPIO20立即变化,符合代码。
但是代码中GPIO20与GPIO22的DELAY_US(0.3)明显不对,图中的延时已经大约为9us了。

2)DELAY_US(0.1)时
此时GPIO20(蓝色曲线)反转存在明显延迟,但后两个GPIO22反转正常,无延时。

3)DELAY_US(1)
此时,2)中的GPIO20反转间的延时消失,但是DELAY_US(1)对应的延时时间为9us左右。

4)DELAY_US(10)
DELAY_US(10)对应的时间进阶20us。

疑惑:
1)DELAY_US()的延时时间与代码不符合
2)GPIO20为何会出现延迟反转的现象(第二张图)
谢谢
Susan Yang:请TIer 去 https://e2e.ti.com/发帖询问。
TI中文支持网
