打印
[ZLG-MCU]

请教:关于SysCtlDelay()延时函数

[复制链接]
5489|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hopeasy|  楼主 | 2009-6-22 22:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于SysCtlDelay()延时函数:

在周公的所有关于LM3S的例程中均采用了hh_SystemInit.c,其默认的设置为采用主晶振6M

而在程序中则如此写:
1. SysCtlDelay(20);       //   延时60个系统周期
2. SysCtlDelay(150 * (SysCtlClockGet( ) / 3000));    //   延时150ms 

这里关于系统周期的说法:
2中,SysCtlClockGet( )=6000000 Hz,换算为1ms,则为6000Hz

总延时为 150*6000/3000*3=900时钟周期,对应于150ms。
即当振荡源为6MHz时,6时钟周期耗时1ms
如果为40M,则40时钟周期耗时1ms

我的理解对么?

如果上述理解正确的话,那么:
在40M下需要延时150ms,函数同样可以写为
SysCtlDelay(150 * (SysCtlClockGet( ) / 3000));    //   延时150ms

相关帖子

沙发
zlgmcu| | 2009-6-23 08:36 | 只看该作者

正解!

该问题以前有许多人问过的。
这是周立功手下工程师创造性的写法,其最大好处是想延迟多少跟具体的时钟频率配置无关,方便移植。
但好多新手感觉有些奇怪,因为不符合“常规”。

使用特权

评论回复
板凳
hopeasy|  楼主 | 2009-6-23 09:29 | 只看该作者

谢谢

谢谢

使用特权

评论回复
地板
xiaoxin1986| | 2009-7-4 16:26 | 只看该作者

2楼说的很好

使用特权

评论回复
5
liujigan| | 2009-7-6 09:35 | 只看该作者

感觉不对呀

我用SysCtlDelay(1000*SysCtlClockGet()/3000);做了个延时使LED反转,可灯亮来的速度要比秒针快的多呀?我使用的是8MHZ晶振。

使用特权

评论回复
6
xiaoxin1986| | 2009-7-7 23:41 | 只看该作者

时钟没设好吧

使用特权

评论回复
7
linhai1986| | 2009-7-15 19:13 | 只看该作者

学习

使用特权

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

本版积分规则

8

主题

40

帖子

1

粉丝