中级会员
- 积分
- 477
- 威望
- 218
- 贡献
- 247
- 兑换币
- 20
- 注册时间
- 2010-8-16
- 在线时间
- 6 小时
|
我知道dg128的……
这是一段程序:
void MCUInit(void)
{
//(1)禁止总中断
DISABLE_INTERRUPTS;
//(2)CLKSEL的第7位置0,选择系统时钟源为OSCCLK
//在PLL程序执行前,内部总线频率=OSCCLK/2
//clksel.7(PLL选择位)决定内部总线时钟来源
//=O,BusClock=OSCCLK/2; =1,BusClock=PLLCLK/2
//CLKSEL &= 0x7f; //此时:BusClock=OSCCLK/2
CLKSEL_PLLSEL=0;
//(3)禁止PLL
//PLLCTL &= 0xbf;//PLLCTL.6(pllon)设为0;先关闭PLL
PLLCTL_PLLON=0;
//(4)根据需要的时钟频率设置SYNR和REFDV寄存器
//计算公式LLCLK=2*OSCCLK*((SYNR+1)/(REFDV+1))
SYNR = 0x00; //对PLLCLK增频的因子
REFDV = 0x00; //对PLLCLK分频的因子
//(5)打开PLL
PLLCTL |= (1<<6); //PLLCTL.6(pllon)设为1;开PLL
//(6)通过判断CRGFLG寄存器的LOCK位,确定PLL是否稳定
// while ((CRGFLG&0x08) == 0x00);
while(CRGFLG_LOCK==0);
//(7)时钟频率稳定后,允许锁相环时钟源作为系统时钟源;
CLKSEL |= (1<<7); //本句执行后:BusClock=PLLCLK/2
//(8)设置是否允许IRQ中断、是否允许看门狗
INTCR &= 0xbf; //IRQCR.6(IRQEN) =0禁止IRQ中断(默认开)
COPCTL = 0x00; //COPCTL.2-0(cr2:cr0) =000禁止看门狗
} |
|