📄 system.c
字号:
#include "2410addr.h"
#define EXT_XTAL_FREQ 12000000
unsigned int sys_fclk;
unsigned int sys_hclk;
unsigned int sys_pclk;
unsigned int sCLKDIVN;
static void SetHclkPclk()
{
if(sCLKDIVN&2)
sys_hclk = sys_fclk>>1;
else
sys_hclk = sys_fclk;
if(sCLKDIVN&1)
sys_pclk = sys_hclk>>1;
else
sys_pclk = sys_hclk;
}
//************************[ HCLK, PCLK ]***************************
void ChangeClockDivider(int hdivn,int pdivn)
{
// hdivn,pdivn FCLK:HCLK:PCLK
// 0,0 1:1:1
// 0,1 1:1:2
// 1,0 1:2:2
// 1,1 1:2:4
rCLKDIVN = (hdivn<<1) | pdivn;
sCLKDIVN = (hdivn<<1)|pdivn;
if(hdivn)
MMU_SetAsyncBusMode();
else
MMU_SetFastBusMode();
}
//*************************[ MPLL ]*******************************
void ChangeMPllValue(unsigned int val)
{
unsigned int i;
unsigned char mdiv, pdiv, sdiv;
rMPLLCON = val;
mdiv = (val>>12)&0xff;
pdiv = (val>>4)&0x3f;
sdiv = val&0x3;
i = (pdiv+2);
while(sdiv--)
i *= 2;
sys_fclk =(unsigned int) ((mdiv+8)*EXT_XTAL_FREQ)/i;
SetHclkPclk();
for(i=0;i<500;i++);
}
//**************************[ UPLL ]*******************************
void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
{
rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}
//interupt
void ISR_init(void)
{
rINTMOD = 0x0; //All=IRQ mode
rINTMSK = BIT_ALLMSK; //All interrupt is masked.
rINTSUBMSK = BIT_SUB_ALLMSK; //All sub-interrupt is masked. <- April 01, 2002 SOP
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -