总是会跑19ms

[复制链接]
 楼主| yszong 发表于 2017-5-14 22:40 | 显示全部楼层 |阅读模式
关于系统时钟的,我目前在做一个对于上电开始工作时间要求比较高的项目,要求是从上电到开始跑程序的时间要尽可能的短,在程序的开始,要设置时钟,我么要跑80M,用的外接晶振6M,开PLL,分频2.5.我本来是用TI的库函数SysCtlClockSet();来进行时钟设定的,后来实测发现这个函数需要浪费100ms,达不到我的要求,我变找个这个函数的源代码,缩短了打开外部晶振后延时的等待(这里标准库函数等待了98ms),但发现删除以后,还是有19ms左右的延时,经过仿真发现,这一部分延时是在我打开外部时钟后,切换时钟源修改寄存器时的等待。测试时发现一个奇怪的现象,只要我在切换时钟源前等待的延时小于19ms,这个程序总是会跑19ms,非常的奇怪
spark周 发表于 2017-5-14 22:44 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| yszong 发表于 2017-5-14 22:45 | 显示全部楼层

//  系统时钟初始化
void ClockInit(void)
{
     unsigned long  ulDelay, ulRCC, ulRCC2, ulConfig;
     ulConfig = SYSCTL_USE_PLL |                         //  系统时钟设置 使用PLL
                    SYSCTL_OSC_MAIN |                        //  采用主振荡器
                    SYSCTL_XTAL_6MHZ |                       //  外接6MHz晶振
                    SYSCTL_SYSDIV_2_5;
     ulRCC = HWREG(SYSCTL_RCC);
     ulRCC2 = HWREG(SYSCTL_RCC2);
     
    ulRCC &= (~(SYSCTL_RCC_IOSCDIS | SYSCTL_RCC_MOSCDIS) |
                   (ulConfig & (SYSCTL_RCC_IOSCDIS | SYSCTL_RCC_MOSCDIS)));
                  
                  
     HWREG(SYSCTL_RCC) = ulRCC;
     
SysCtlDelay(65536);
   
    ulRCC &= ~(SYSCTL_RCC_XTAL_M | SYSCTL_RCC_OSCSRC_M);
     ulRCC |= ulConfig & (SYSCTL_RCC_XTAL_M | SYSCTL_RCC_OSCSRC_M);
     ulRCC2 &= ~(SYSCTL_RCC2_USERCC2 | SYSCTL_RCC2_OSCSRC2_M);
     ulRCC2 |= ulConfig & (SYSCTL_RCC2_USERCC2 | SYSCTL_RCC_OSCSRC_M);
     ulRCC2 |= (ulConfig & 0x00000008) << 3;
         
HWREG(SYSCTL_RCC) = ulRCC;
     HWREG(SYSCTL_RCC2) = ulRCC2;
           
    SysCtlDelay(16);
 楼主| yszong 发表于 2017-5-14 22:48 | 显示全部楼层

在这段程序里,只要前面那个延时小于19ms,那这段程序总是会跑19ms,感觉和程序语句完全不想管了
zhenykun 发表于 2017-5-14 22:50 | 显示全部楼层

数据手册上没有说明吗?
spark周 发表于 2017-5-14 22:51 | 显示全部楼层

数据手册上有这么一条

TMOSC_SETTLE 主振荡器建立时间a 17.5 - 20 ms
 楼主| yszong 发表于 2017-5-14 22:55 | 显示全部楼层

从使能外部晶振到晶振建立,最少需要17.5ms。。。。真无语,居然这么慢,没有办法了。。。以后有碰到这样问题的朋友也注意了哈
 楼主| yszong 发表于 2017-5-14 22:56 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈
sanfuzi 发表于 2017-5-15 19:00 | 显示全部楼层
这个是有while循环造成的吗?
sanfuzi 发表于 2017-5-15 19:04 | 显示全部楼层
可能需要配置时钟比较复杂。
gygp 发表于 2017-5-16 23:17 | 显示全部楼层
代码设置都有需要一段时间吧。
gygp 发表于 2017-5-16 23:22 | 显示全部楼层
楼主需要多长的延时?
fentianyou 发表于 2017-5-17 21:59 | 显示全部楼层
这是配置时钟的时候用的 。
fentianyou 发表于 2017-5-17 22:03 | 显示全部楼层
如果不配置外部时钟也有这个延时吗?
fentianyou 发表于 2017-5-18 23:52 | 显示全部楼层
为什么你的 时钟配置需要这么长时间
fentianyou 发表于 2017-5-18 23:55 | 显示全部楼层
使用12Mhz晶振也这样吗?
iyoum 发表于 2017-5-19 08:17 | 显示全部楼层
任何的初始化都需要时间,这样19ms应该测量不出来吧。
iyoum 发表于 2017-5-19 08:25 | 显示全部楼层
配置外设的时候需要的时间可能更长。
plsbackup 发表于 2017-5-21 21:40 | 显示全部楼层
配置的代码在哪里
kmzuaz 发表于 2017-5-21 21:40 | 显示全部楼层
怎么使用的SysCtlClockSet?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部