从MC9S12XET256MMA的手册上可以看到系统时钟发生器,如下图
手册上提供了锁相环倍频计算公式:
手册中提供了一些性能比较稳定的频率设置,如下表所示:
MC9S12XET256MMA在未设置时钟且使用外部晶振的情况下,默认总线频率为外部晶振频率的1/2。
这里使用的外部晶振为8M,因此在未进行倍频的情况下默认总线频率为4M。
通过锁相环倍频可以使锁相环频率达到100M,总线频率达到50M;
通过锁相环可以加快总线的频率,使计算速度加快,但也会导致稳定性下降
1、打开上次的LED和按键的工程,打开main.c文件,如下图所示:
2、按照手册中提供的稳定性较好的频率进行锁相环的配置,这里配置总线频率为50M。
在MC9S12XET256.h文件中都能够相关寄存器的定义,如下图所示:
//PLL初始化:
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
void init_PLL(void)
{
CLKSEL &= 0x7f; //设置OSCCLK作为系统时钟
PLLCTL &= 0x8F; //禁止锁相环
//PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1), fbus=PLLCLK/2 设定50M总线,100M pll
SYNR = 0xd8;
REFDV = 0x43;
POSTDIV = 0x00;
PLLCTL |=0x70; //使能锁相环
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK锁定
CLKSEL |= 0x80; //设置PLLCLK为系统时钟
}
3、在main.c文件中进行调用观察现象,这里我们增加一个软件延时来使LED闪烁,如下图所示:
4、下载程序并运行后发现LED闪烁频率很快,然后我们取消PLL的初始化,如下图:
5、最后再下载运行后发现LED的闪烁频率变得很慢,说明PLL倍频成功,软件运行速度加快。