pingfandeshijie 发表于 2020-8-27 20:40
SysCtlDelay(SysCtlClockGet()/3000) 这个函数执行的结果就是延时1ms,无论你的系统时钟是多少,当然你的系统时钟是不能低于3K的。
SysCtlClockGet()函数返回的值是系统的频率,也就是1S钟的CLOCK个数,这个个数/1000就是1ms系统时钟的个数,由于SysCtlDelay函数一个循环判断执行需要3个CLOCK时钟,所以系统时钟/3000就表示系 ...
SysCtlClockSet(SYSCTL_SYSDIV_2 | SYSCTL_USE_PLL | SYSCTL_XTAL_12MHZ | SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
while(1)
[
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);//high
SysCtlDelay( (SysCtlClockGet() / 3000) );
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0);//low
SysCtlDelay( (SysCtlClockGet() / 3000) );
]
这边我做了两个尝试。1,改SysCtlDelay( (SysCtlClockGet() / 3000) );为ROM_SysCtlDelay( (SysCtlClockGet() / 3000) );
2改SYSCTL_XTAL_12MHZ;
发现这两个改动都对延时有影响。
所以还是对这个函数有疑惑。新手学习,请多指教