?? mcuinit.c
字號:
//[MCUInit.c]DG128芯片初始化函數-------------------------------------------*
//功 能: *
// 芯片初始化設置:通過設置CLKSEL寄存器,確定內部總線的時鐘源;通過PLL編 *
// 程,設置PLLCLK;通過設置INTCR和COPCTL寄存器,分別決定是否允許IRQ中斷和 *
// 看門狗。 *
// (1)外部晶振= 4Mhz BusClock=25Mhz *
// (2)使能IRQ中斷 *
// (3)使能看門狗 *
//參 數:無 *
//返 回:無 *
//-------------------------------------------------------------------------*
//頭文件
#include "MCUInit.h" //芯片初始化頭文件
void MCUInit(void)
{
//(1)CLKSEL的第7位置0,選擇系統時鐘源為OSCCLK
//在PLL程序執行前,內部總線頻率=OSCCLK/2
//clksel.7(PLL選擇位)決定內部總線時鐘來源
CLKSEL = 0x7F; //此時:BusClock=OSCCLK/2
//(2)禁止PLL
PLLCTL = 0xB3;//PLLCTL.6(pllon)設為0;先關閉PLL
//(3)根據需要的時鐘頻率設置SYNR和REFDV寄存器
//計算公式:PLLCLK=2*OSCCLK*((SYNR+1)/(REFDV+1))
SYNR = 0x18; //對PLLCLK增頻的因子
REFDV = 0x07; //對PLLCLK分頻的因子
//(4)使能PLL
PLLCTL |= (1<<6); //PLLCTL.6(pllon)設為1;開PLL
//(5)通過判斷CRGFLG寄存器的LOCK位,確定PLL是否穩定
while ((CRGFLG&0x08) == 0x00);
//(6)時鐘頻率穩定后,允許鎖相環時鐘源作為系統時鐘源;
CLKSEL |= (1<<7); //若Foscclk=4Mhz,本句執行后:Fpllclk=25Mhz
//(7)設置是否允許看門狗
INTCR = 0x40; //IRQCR.6(IRQEN) =1使能IRQ中斷
COPCTL = 0x87; //COPCTL.2-0(cr2:cr0) =111使能看門狗
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -