TI中文支持网
TI专业的中文技术问题搜集分享网站

问一个关于SysCtlDelay(SysCtlClockGet() / (1000 * 3));问题

是不是任何晶振情况下,SysCtlDelay(SysCtlClockGet() / (1000 * 3));都是延时1MS

还有如果主频是 ROM_SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ); //系统时钟设置  16M

那么是否可以直接写SysCtlDelay(16000000 / (1000 * 3));和SysCtlDelay(SysCtlClockGet() / (1000 * 3));效果一样,

还有这种情况下16M的TM4C123的系统时钟是多少?

Michael Sun:

可以的。SysCtlDelay执行1次是3个时钟周期。

按照上面的时钟配置,系统时钟就是16MHz

hao qi:

回复 Michael Sun:

SysCtlDelay(SysCtlClockGet()/3000) 这个函数执行的结果就是延时1ms,无论你的系统时钟是多少,当然你的系统时钟是不能低于3K的。SysCtlClockGet()函数返回的值是系统的频率,也就是1S钟的CLOCK个数,这个个数/1000就是1ms系统时钟的个数,由于SysCtlDelay函数一个循环判断执行需要3个CLOCK时钟,所以系统时钟/3000就表示系统执行1ms的时间。

灰小子:

回复 hao qi:

复制来的吧?

Michael Sun:

回复 hao qi:

用SysCtlDelay可以粗略的做延迟。需要精确的话还是要用定时器来做。

赞(0)
未经允许不得转载:TI中文支持网 » 问一个关于SysCtlDelay(SysCtlClockGet() / (1000 * 3));问题
分享到: 更多 (0)