分享:KE02库中的ICS设置选外部晶振时的小BUG

2020-02-21 21:26发布

本帖最后由 wangpengcheng 于 2014-2-27 22:02 编辑

实验板:FRDM-KE02Z

编译环境:KEIL4.72a

实验过程:
KE02库文件Demo中,在KE02_Config.h中,配置时钟为 :
#define USE_FBE_OSC
#define EXT_CLK_FREQ_KHZ        10000       /* in KHz */
然后编译执行,结果程序运行到ICS.c文件中的void FEI_to_FBE_OSC(ICS_ConfigType *pConfig)函数里面的while(((ICS->S & ICS_S_CLKST_MASK) >> ICS_S_CLKST_SHIFT) !=2);语句,开始死循环。

问题原因:在ICS.c文件中的void ICS_Init(ICS_ConfigType *pConfig)函数中
else if (pConfig->u8ClkMode == ICS_CLK_MODE_FBE_OSC)
  {
        pConfig->oscConfig.bIsCryst = 0;        /* is clock */            
        FEI_to_FBE_OSC(pConfig);                /* switch to FBE mode with active oscillator input */
  }
其中红 {MOD}的语句代表关掉外部晶振,应该是
else if (pConfig->u8ClkMode == ICS_CLK_MODE_FBE_OSC)
  {
        pConfig->oscConfig.bIsCryst = 1;        /* is clock */            
        FEI_to_FBE_OSC(pConfig);                /* switch to FBE mode with active oscillator input */
  }
才对。

另外这样配置出来的BUS时钟是5M,默认除2了,所以在KE02_Config.h中应该将Bus时钟设置为下面的值
#define  BUS_CLK_HZ                5000000L
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
最炫民族风
1楼-- · 2020-02-23 00:23
wuqt 发表于 2014-8-15 17:28
请问外部晶振用20M无源的内置负载电容 一直不起振是怎么回事? 跟软件配置没关系吧?
用11.0592M的都能起 ...

那你如果加上外部电容是不是能起振呢?
还有,你20M的晶振是不是好的。
浪里白条
2楼-- · 2020-02-23 05:31
楼主厉害,这都能发现。
web110
3楼-- · 2020-02-23 07:03
这个要记录一下
ln08136207
4楼-- · 2020-02-23 08:01
使用内部时钟,没测试过外部时钟函数
wangpengcheng
5楼-- · 2020-02-23 11:52
 精彩回答 2  元偷偷看……
rootxie
6楼-- · 2020-02-23 15:07
谢谢楼主的经验分享!!

一周热门 更多>