大家好、有一个关于使用 TM4C123G 可以"等待"最短时间的问题。 处理器可配置为以80MHz 的最大速度运行、方法如下:
(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN);
...我知道的最短的"等待"方式是使用:
SysCtlDelay(1);
因此、如果处理器以80MHz 的频率运行、这意味着每周期12.5纳秒。 但是、显然一行代码需要多个周期才能执行、如果我理解正确、汇编指令需要多个周期才能执行。 对于 SysCtlDelay(1)代码行的汇编是值得的:
SysCtlDelay(1);
0000057a:2001 MOV R1、#1
0000057c:F000F958 BL #0x830
SysCtlDelay():
00000830:1E40 subs r0、r0、#1
00000832:D1FD bne SysCtlDelay
00000834:4770 BX LR
我为代码段计时的方式是切换连接到逻辑分析仪的引脚。 示例代码:
while (1)
{
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、0x80);
SysCtlDelay(1);
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、0x00);
SysCtlDelay(1);
}
^这只是简单地将 PA7引脚设置为高电平、然后通过尽可能短的等待时间将其设置为低电平。 使用我的逻辑分析仪测量该值时、我看到引脚处于高电平280纳秒、然后处于低电平360纳秒。 我想这似乎是对的、同意吗? 这意味着上面的小组装块、加上打开/关闭引脚所需的任何组装大约需要几百纳秒、或者按周期计算、~300/12.5 =~24个周期。
只是想知道我这里的分析是否正确、以及是否有其他方法等待几百纳秒以上的较短时间?