system.c

来自「下位机程序」· C语言 代码 · 共 64 行

C
64
字号
#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 + =
减小字号Ctrl + -
显示快捷键?