在线时间276 小时
UID2086952
注册时间2015-8-9
NXP金币253
TA的每日心情 | 开心 2023-6-2 13:32 |
---|
签到天数: 272 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4413
- 最后登录
- 2023-6-2
|
本帖最后由 andrewz 于 2016-11-29 09:55 编辑
上次LPC824以为是烧了,结果用flash magic又能用.干脆用它了.
系统时钟不对?
拿出来和外面的时钟对比一下就清楚了.
这么一个小家伙,也没什么太多复杂的东西,RM倒是写得足够眼花缭乱.
首先要说的是,
PLL里面的P设置真的是无效的.看我的代码:
#define SYSCON_SYSPLLCTRL_MSEL_SHIFT ((unsigned long)0)
#define SYSCON_SYSPLLCTRL_PSEL_SHIFT ((unsigned long)5)
LPC_SYSCON->SYSPLLCTRL=((4<<SYSCON_SYSPLLCTRL_MSEL_SHIFT)|(0<<SYSCON_SYSPLLCTRL_PSEL_SHIFT));
上面这个0不管我设置成1还是0,它的速度都是一样.
而且根据串口分频来看,他是60MHz的PLL直接输出了,也就是 IRC=12M*(4+1)=60M.
为了进一步验证这个想法.
LPC_SYSCON->SYSAHBCLKCTRL|=SYSCON_SYSAHBCLKCTRL_SCT;
LPC_SYSCON->PRESETCTRL&=~SYSCON_PRESETCTRL_SCTRST_N;
LPC_SYSCON->PRESETCTRL|=SYSCON_PRESETCTRL_SCTRST_N;
LPC_SCT->CONFIG&=~SCT_CONFIG_UNIFY;/*2 16-bits timer.*/
LPC_SCT->CTRL_L|=SCT_CTRL_CLRCTR;/*clears the L counter.*/
LPC_SCT->CTRL_L|=59UL<<SCT_CTRL_PRE_SHIFT;/*30M/60 =500K. 2us.*/
LPC_SCT->CTRL_L&=~SCT_CTRL_HALT;/*start the timer.*/
if(timeout(&timer_5ms,2500)){
if(i<200){
i++;
}else{
Led_toggle(LED_RED);
i=0;
}
}
程序出来理应是1S亮1S灭,实际结果是下面:
算一下就知道是0.5秒切换.
那么Timer的时钟也是60M.
问题贴这里了,大虾们来看看怎么回事吧~
哎,就当60M来用算了.
|
|