|
使用到的寄存器有:
PLLCON 控制寄存器,只有当其中的第0位PLLE和第1位都为1时,PLL输出时钟才能连接到微控制器中。
PLLCFG 配置寄存器,设置倍频值和分频值
PLLSTAT 状态寄存器,主要用于查询第10位PLCOK,看PLL是否锁定指定的频率。
板上的外部晶振为Fosc=12M,我们希望获得最快时钟Fcclk=60M,根据上面的图我们计算出M=60/12=5;因此设置PLLCFG 配置寄存器的分频值为M-1=4;根据Fcco的取值范围, 1.3<P<2.67,所以PLLCFG 配置寄存器的倍频值P只能取值2.然后我们按照这个顺序编写代码,设置成功电亮LED1
z PLLCON=1——设定 PLL 之前,必须使能 PLL,但不能连接 PLL;
z 设定 P 和 M 的值(PLLCFG);
z 发送 PLL 馈送序列;
z 等待 PLL 锁定——PLLSTAT. 10 = 1;
z PLLCON=3——设定 P 和 M 之后,连接 PLL;
z 发送 PLL 馈送序列,把 P 和 M 的值写入硬件。
主要代码:
#include <LPC214X.H>
#include "led.h"
void PLL_Init(void)//设置系统时钟CCLK=60M,默认VPB四分频=15M
{
PLL0CON=1; //使能PLL0
PLL0CFG=0X23; //设置M=4 P=2
PLL0FEED=0XAA; //发送PLL0馈送序列
PLL0FEED=0X55;
while((PLL0STAT&(1<<10))==0);//等待锁定
PLL0CON=3; //PLL0使能并连接
PLL0FEED=0XAA;
PLL0FEED=0X55;
}
int main(void)
{
PLL_Init();
Led_Init();
LED1_ON();
while(1)
{
}
}