智能车制作
标题:
S12Xdp512 PLL的应用
[打印本页]
作者:
gujianwei2012
时间:
2011-4-16 10:34
标题:
S12Xdp512 PLL的应用
/*---------------------------------------------------------*/
/************************************************************
飞翔科技MC9S12XDP512汽车电子综合开发平台
E-mail:bhfengchong@gmail.com
2008f.d@163.com
淘宝店:http://fxfreefly.taobao.com
http://fxfreefly2.taobao.com
************************************************************/
/*---------------------------------------------------------*/
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK 80000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
void INIT_PLL(void)
{
CLKSEL &= 0x7f; //设置OSCCLK作为系统时钟
PLLCTL &= 0x8F; //禁止锁相环
//PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1), fbus=PLLCLK/2
#if(BUS_CLOCK == 120000000)
SYNR = 0xcd;
#elif(BUS_CLOCK == 104000000)
SYNR = 0xcc;
#elif(BUS_CLOCK == 96000000)
SYNR = 0xcb;
#elif(BUS_CLOCK == 88000000)
SYNR = 0xca;
#elif(BUS_CLOCK == 80000000)
SYNR = 0xc9;
#elif(BUS_CLOCK == 72000000)
SYNR = 0xc8;
#elif(BUS_CLOCK == 64000000)
SYNR = 0xc7;
#elif(BUS_CLOCK == 56000000)
SYNR = 0xc6;
#elif(BUS_CLOCK == 48000000)
SYNR = 0xc5;
#elif(BUS_CLOCK == 40000000)
SYNR = 0x44;
#elif(BUS_CLOCK == 32000000)
SYNR = 0x43;
#elif(BUS_CLOCK == 24000000)
SYNR = 0x42;
#elif(BUS_CLOCK == 16000000)
SYNR = 0x01;
#endif
REFDV = 0x81;
PLLCTL |=0x70; //使能锁相环
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK锁定
CLKSEL |= 0x80; //设置PLLCLK为系统时钟
}
/*************************************************************/
/* 延时函数 */
/*************************************************************/
void delay(void)
{
unsigned int i,j;
for(i=0;i<10;i++)
for(j=0;j<50000;j++);
}
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {
DisableInterrupts;
INIT_PLL();
LEDCPU_dir = 1;
LEDCPU = 0;
EnableInterrupts;
for(;;)
{
delay();
LEDCPU = ~LEDCPU; //反转灯的状态
}
}
复制代码
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2