附上时钟初始化代码,仅供参考。
/************************************************************************
*函数原型: void InitClock( unsigned char Out_In, unsigned char High_Low, unsigned char Dev)
*功能: 时钟初始化处理程序
Out_In
0--内部时钟
1--外时钟
High_Low
0--低速
1--高速
Dev 1 2 4 8 16
************************************************************************/
void InitClock(unsigned char Out_In,unsigned char High_Low,unsigned char Dev)
{
prcr = 0x01; //关闭和时钟相关的保护寄存器,允许修改时钟
switch(Dev)
{
case 1: cm16=0;cm17=0;cm06=0;break; //f1
case 2: cm16=1;cm17=0;cm06=0;break; //f2
case 4: cm16=0;cm17=1;cm06=0;break; //f4
case 8: cm16=0;cm17=0;cm06=1;break; //f8
case 16:cm16=1;cm17=1;cm06=0;break; //f16
default:break;
}
if(High_Low) //高速时钟
{
hra00 = 1; //高速内部振荡器振荡
hra01 = 1; //使用内部高速振荡器时钟(FRING-Fast)作为内部时钟(FRING)
} else //低速时钟
{
cm14=0; //低速内部振荡器振荡
hra01 = 0; //使用内部低速振荡器时钟(FRING-Fast)作为内部时钟(FRING)
}
if(Out_In) //使用外部时钟
{
cm13 = 1; //XIN-XOUT引脚连接内部起振电路
cm15 = 1; //XIN-XOUT引脚使用高驱动能力
cm05 = 0; //开始振荡
asm("NOP\nNOP\nNOP\nNOP");
asm("NOP\nNOP\nNOP\nNOP");
asm("NOP\nNOP\nNOP\nNOP");
ocd2 = 0; //使用主时钟作为系统时钟
} else //使用内部时钟
{
asm("NOP\nNOP\nNOP\nNOP");
ocd2 = 1; //使用内部时钟作为系统时钟
}
prcr = 0; //打开保护寄存器
}
时钟初始化代码
最新推荐文章于 2025-03-27 22:26:44 发布