打印

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

[复制链接]
2117|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
自民|  楼主 | 2014-11-7 08:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是不是任何晶振情况下,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的系统时钟是多少?

相关帖子

沙发
dirtwillfly| | 2014-11-7 20:25 | 只看该作者
本帖最后由 dirtwillfly 于 2014-11-7 20:26 编辑

SysCtlDelay(SysCtlClockGet()/3000) 这个函数执行的结果就是延时1ms,无论你的系统时钟是多少,当然你的系统时钟是不能低于3K的。

SysCtlClockGet()函数返回的值是系统的频率,也就是1S钟的CLOCK个数,这个个数/1000就是1ms系统时钟的个数,由于SysCtlDelay函数一个循环判断执行需要3个CLOCK时钟,所以系统时钟/3000就表示系统执行1ms的时间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

195

帖子

2

粉丝