本帖最后由 bailao99 于 2019-9-21 17:20 编辑
KEA128使用外部时钟,无法实现20MHz总线频率
代码如下:
void sysinit(void)
{
OSC_CR = 0x96; //选择外部时钟,高功耗高增益
while ((OSC_CR & OSC_CR_OSCINIT_MASK) == 0);//等待OSC时钟设置完成
//FEE模式
ICS_C1 = 0x18; //8M/256 = 31.25K ICSOUT = 31.25*1280=40M
ICS_C2 = 0x20; //BDIV=1
while ((ICS_S & ICS_S_IREFST_MASK) == 1);
while ((ICS_S & ICS_S_LOCK_MASK) == 0);
SIM_BUSDIV = 1 ; // 40M BUS Clock = ICSOUT/2 20M
ICS_C2 = 0x00;//BDIV=1
}
外部晶振8MHz,运行后总是进入Default_Handler
如果修改如下:
ICS_C2 = 0x20;//BDIV=2
程序就能正常运行,可是只能实现10MHz总线频率
程序无错,是其他东西导致了进入Default_Handler
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
OSC->CR = 0x96; // 选择外部时钟,高范围、高增益振荡器
while ((OSC->CR & OSC_CR_OSCINIT_MASK) == 0); // 等待振荡器准备就绪
//FFE模式
ICS->C2 = 0x20; // BDIV=1
ICS->C1 = 0x18; //8M/256 = 31.25K ICSOUT = 31.25*1280=40M
while ((ICS->S & ICS_S_IREFST_MASK) == 1); // 等待选择外部源
while ((ICS->S & ICS_S_LOCK_MASK) == 0); // 等待FLL锁定
SIM->CLKDIV = 0x01100000; // 核心时钟=ICSOUT/1 40M 总线时钟=核心时钟/2 20M
ICS->C2 = 0x00; // BDIV=1除以1–允许最大核心和总线时钟频率
你参考下吧
一周热门 更多>