注册 登录
查看: 713|回复: 9

KL26卡在while (!(MCG_S & MCG_S_LOCK0_MASK)) {}; //等待 PLL锁了(锁相环)

[复制链接]
发表于 2014-6-1 03:41:53 | 显示全部楼层 |阅读模式
请问一下:
我的程序卡在 MKL_mcg.c 的 pll_init() 中
while (!(MCG_S & MCG_S_LOCK0_MASK)) {};    //等待 PLL锁了(锁相环)  
是怎么回事?
排除其他硬件问题。因为用别的库可以下载可以跑,完全正常。
采用无源晶振8M,KL26Z256VLL4
谢谢指点~!
回复

使用道具 举报

发表于 2014-6-1 08:33:41 | 显示全部楼层
超频过高了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 14:46:21 | 显示全部楼层
汤静云 发表于 2014-6-1 08:33
超频过高了

谢谢,但是我把PLL220改成PLL48之后卡在了另外一个地方
while (((MCG_S & MCG_S_CLKST_MASK) ) != MCG_S_CLKST(0x3)) {};//等待选择输出PLL
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 14:47:58 | 显示全部楼层
汤静云 发表于 2014-6-1 08:33
超频过高了

确切的说是这三个函数不断的循环
while (!(MCG_S & MCG_S_LOCK0_MASK)) {};                          //等待 PLL锁了(锁相环)

    // 现在已经进入了 PBE 模式

    // PBE -> PEE
    //MCG_C1 &= ~MCG_C1_CLKS_MASK;
    MCG_C1 = MCG_C1_IRCLKEN_MASK;

    while (((MCG_S & MCG_S_CLKST_MASK) ) != MCG_S_CLKST(0x3)) {};//等待选择输出PLL
回复 支持 反对

使用道具 举报

发表于 2014-6-1 15:50:27 | 显示全部楼层
ExiBQ 发表于 2014-6-1 14:46
谢谢,但是我把PLL220改成PLL48之后卡在了另外一个地方
while (((MCG_S & MCG_S_CLKST_MASK) ) != MCG_S ...

如果是用我们的核心板,我们的例程,降低了频率之后,应该不会出现这情况啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 21:43:41 | 显示全部楼层
山外メ雲ジ 发表于 2014-6-1 15:50
如果是用我们的核心板,我们的例程,降低了频率之后,应该不会出现这情况啊。

就是山外的KL26系统板啊
回复 支持 反对

使用道具 举报

发表于 2014-6-1 21:46:05 | 显示全部楼层
ExiBQ 发表于 2014-6-1 21:43
就是山外的KL26系统板啊

如果降频了,还出现这样的情况,那寄回来,我们看看是什么回事。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 22:02:25 | 显示全部楼层
山外メ雲ジ 发表于 2014-6-1 21:46
如果降频了,还出现这样的情况,那寄回来,我们看看是什么回事。

应该排除硬件问题吧,因为用岱默的程序写过能跑。
你说的降频是不是只要把FIRE_MKL_conf.h里面的
#define PLL_CLK                PLL220      // 从 PLL_e 里选择 已提供的 配置方案
                                          // core/bus 频率 都是 pll 整数倍分频而来
PLL220改成PLL48?
还需要改哪里么?
回复 支持 反对

使用道具 举报

发表于 2014-6-1 22:14:29 | 显示全部楼层
ExiBQ 发表于 2014-6-1 22:02
应该排除硬件问题吧,因为用岱默的程序写过能跑。
你说的降频是不是只要把FIRE_MKL_conf.h里面的
#defi ...

把 PLL改成 48M,已经是正常频率了。
不需要修改其他地方,直接用山外哥的例程,IAR 6.7版本就可以用的。

没用过岱默的,不了解情况。但山外哥的代码没问题的,我这边用着。

对了,山外哥的代码发货前,有测试代码的,你拿到手的时候,通道,LED有没有闪烁?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-2 00:53:29 | 显示全部楼层
丁玉 发表于 2014-6-1 22:14
把 PLL改成 48M,已经是正常频率了。
不需要修改其他地方,直接用山外哥的例程,IAR 6.7版本就可以用的。
...

闪烁那个没注意。。。
不过刚刚改了之后,情况又不同了。
不是卡在某个while循环了。
是整个pll_init()在重复的运行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回列表 返回顶部