查看: 5963|回复: 3

关于SysCtlDelay的问题求助

  [复制链接]

该用户从未签到

发表于 2013-6-3 16:06:46 | 显示全部楼层 |阅读模式
分享到:
在调试LM4F132时候发现设置两种不同的时钟源后delay的时间差别一倍,不知道什么原因?

    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);//50MHz system clock
    或者是SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);//6MHZ OSC

这两种设置的时候调用函数
void vDelay_ms(unsigned int uiMilliSecond)
{
    unsigned long uldms = SysCtlClockGet() / 1000;
    SysCtlDelay(uiMilliSecond * uldms / 3);
}
结果使用OSC时候的delay是正常的,但是pLL的是两倍时间,是哪里没有设置正确?

回复

使用道具 举报

该用户从未签到

发表于 2013-7-8 10:54:41 | 显示全部楼层
支持~~支持~~
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2013-8-25 11:35
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-7-28 18:52:25 | 显示全部楼层
    你试试,好像不管用哪个时钟源,只要工作频率高于40MHz,就会导致实际延时时间大于设置值。
    原因好像是芯片内部Flash的读取频率最大只能达到40M,当工作频率大于40MHz时,通过预取两个字的指令来达到80M的运行主频。但是,当遇到SysCtlDelay函数这种短跳转时这个特性并不能很好的工作,每次都需要读取指令,所以时间就延长了~~~~~~~
    你可以使用ROM_SysCtlDelasy()解决。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2013-10-16 22:36
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-10-7 17:35:43 | 显示全部楼层
    。。。呃呃呃邀请您访问爱板网论坛
    https://www.cirmall.com/bbs/?fromuid=33109
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 23:27 , Processed in 0.161115 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.