📄 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 + -