打印

关于LPC2103的PLL 初始化,怎么初始化???

[复制链接]
2639|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hzocce|  楼主 | 2010-9-2 10:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是第一种:..............................................................................

void PLL_Init(void)
{
  /* 设置系统各部分时钟 */
    PLLCON = 1;
#if ((Fcclk / 4) / Fpclk) == 1
  VPBDIV = 0;
#endif
#if ((Fcclk / 4) / Fpclk) == 2
  VPBDIV = 2;
#endif
#if ((Fcclk / 4) / Fpclk) == 4
  VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
  PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
  PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
  PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
  PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
  PLLFEED = 0xaa;
  PLLFEED = 0x55;
  while((PLLSTAT & (1 << 10)) == 0);
  PLLCON = 3;
  PLLFEED = 0xaa;
  PLLFEED = 0x55;
}


这是第二种。......................................................................................

PLL_INIT()
{

PLLCON  =  1;                            //  使能PLL                     
PLLCFG  = 0x25;                          // 设置M 为6,P为2           
PLLFEED  = 0xAA;                         //  发送PLL馈送序列            
PLLFEED  = 0x55;      
while((PLLSTAT & (1 << 10)) == 0);       // 等待PLL锁定               
PLLCON  = 3;                             // PLL 使能和锁定               
PLLFEED  = 0xAA;                         //  发送PLL馈送序列            
PLLFEED  = 0x55;
}



这2种方式初始化的效果都一样的吗? 小弟我刚学,不懂,谢谢!

相关帖子

沙发
wwdzyih| | 2010-9-2 11:20 | 只看该作者
第一种多了对VPBDI寄存器进行了设置,根据外设选择合适的时钟给外设。第一种倍频是默认的0,相当于1用。应该是系统初始化时调用的。
第二种M,L都进行了设置。后期设置的。

使用特权

评论回复
板凳
hzocce|  楼主 | 2010-9-2 19:50 | 只看该作者
楼上的,我没有完全明白你的意思,因为我是初学。

第二个的意思我倒能看懂, 第一个的根本就看不懂。我初始化PLL 的时候能不能用第二种办法初始化呢?
这2种仅仅个个人的变成习惯不一样吗?  

好心人帮我分析下,谢谢了

使用特权

评论回复
地板
wwdzyih| | 2010-9-3 11:58 | 只看该作者
系统复位的时候在调用初始化程序,进行初始化。第一种就是初始化里面的,后期也可以这样设置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

561

帖子

4

粉丝