?? mcuinit.c
字號(hào):
//[MCUInit.c]DG128芯片初始化函數(shù)-------------------------------------------*
//功 能: *
// 芯片初始化設(shè)置:通過(guò)設(shè)置CLKSEL寄存器,確定內(nèi)部總線的時(shí)鐘源;通過(guò)PLL編 *
// 程,設(shè)置PLLCLK;通過(guò)設(shè)置INTCR和COPCTL寄存器,分別決定是否允許IRQ中斷和 *
// 看門狗。 *
// (1)外部晶振=9.8304Mhz BusClock=19.6608Mhz *
// (2)禁止IRQ中斷 *
// (3)禁止看門狗 *
//參 數(shù):無(wú) *
//返 回:無(wú) *
//-------------------------------------------------------------------------*
//頭文件
#include "MCUInit.h" //芯片初始化頭文件
void MCUInit(void)
{
//(1)禁止總中斷
DISABLE_INTERRUPTS;
//(2)CLKSEL的第7位置0,選擇系統(tǒng)時(shí)鐘源為OSCCLK
//在PLL程序執(zhí)行前,內(nèi)部總線頻率=OSCCLK/2
//clksel.7(PLL選擇位)決定內(nèi)部總線時(shí)鐘來(lái)源
//=O,BusClock=OSCCLK/2; =1,BusClock=PLLCLK/2
CLKSEL &= 0x7f; //此時(shí):BusClock=OSCCLK/2
//(3)禁止PLL
PLLCTL &= 0xbf;//PLLCTL.6(pllon)設(shè)為0;先關(guān)閉PLL
//(4)根據(jù)需要的時(shí)鐘頻率設(shè)置SYNR和REFDV寄存器
//計(jì)算公式:PLLCLK=2*OSCCLK*((SYNR+1)/(REFDV+1))
SYNR = 0x01; //對(duì)PLLCLK增頻的因子
REFDV = 0x00; //對(duì)PLLCLK分頻的因子
//(5)打開PLL
PLLCTL |= (1<<6); //PLLCTL.6(pllon)設(shè)為1;開PLL
//(6)通過(guò)判斷CRGFLG寄存器的LOCK位,確定PLL是否穩(wěn)定
while ((CRGFLG&0x08) == 0x00);
//(7)時(shí)鐘頻率穩(wěn)定后,允許鎖相環(huán)時(shí)鐘源作為系統(tǒng)時(shí)鐘源;
CLKSEL |= (1<<7); //本句執(zhí)行后:BusClock=PLLCLK/2
//(8)設(shè)置是否允許IRQ中斷、是否允許看門狗
INTCR &= 0xbf; //IRQCR.6(IRQEN) =0禁止IRQ中斷(默認(rèn)開)
COPCTL = 0x00; //COPCTL.2-0(cr2:cr0) =000禁止看門狗
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -