📄 init.c
字号:
#include"init.h"
#define PLL_CSEL 0
csect(drivers_L1_code,4) void Init_PLL(int MSEL, int SSSEL)
{
int new_PLL_CTL;
*pPLL_DIV = (SSSEL & 0xf) | (PLL_CSEL<< 3 );
asm("ssync;");
new_PLL_CTL = (MSEL & 0x3f) << 9;
//new_PLL_CTL |= 0x1; //set DF pass CLKIN/2 to PLL
// enable Wake-up from PLL event
*pSIC_IWR |= 0xffffffff;
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}//end Init_PLL
void init_pf()
{
*pFIO_DIR|=0x00a8;//1=output
*pFIO_INEN|=0x0050;//1=enable
//for i2c
*pFIO_DIR|=0x0003;//1=output
}
EX_INTERRUPT_HANDLER(TIMER0_ISR)
{
*pTIMER_STATUS=0x01;//清除本次中断
if(globle_counter++>100)
{
tiemr_1s_flag=1;
globle_counter=0;
}
asm("nop;");
}
void init_timer()
{
*pTIMER0_CONFIG=0x0019;//enable interruput,counter to period end,PWM_OUT mode
*pTIMER0_PERIOD=1134000;//10ms
*pTIMER0_WIDTH=567000;//0.5ms
*pTIMER_ENABLE=0x0001;
globle_counter=0;
tiemr_1s_flag=0;
*pSIC_IAR2&=0xfffffff0;
*pSIC_IAR2|=0x00000005;//timer0 IVG=12;
*pSIC_IMASK|=0x00010000;//enable timer0 interuput
register_handler(ik_ivg12, TIMER0_ISR);
}
EX_INTERRUPT_HANDLER(REAL_TIME_ISR)
{
*pRTC_ISTAT=0x0004;//清除本次中断
tiemr_1s_flag=1;
asm("nop;");
}
void init_realtimer()
{
*pRTC_ICTL=0x0004;//per second intrrupt
*pRTC_STAT=0;//(12+(18<<6)+(5<<12));
*pRTC_PREN=0x01;//enable Prescaler
*pSIC_IAR0&=0x0fffffff;
*pSIC_IAR0|=0x60000000;//real time IVG=13;
*pSIC_IMASK|=0x00000080;//enable timer0 interuput
register_handler(ik_ivg13, REAL_TIME_ISR);
}
int sdram_test()
{
int i;
unsigned char *sdram_start=(unsigned char*)(0x00000000);
unsigned char temp;
int pass=0;
///////////////////bank0
for(i=0x00000004;i<0x01000000;i++)
{
*(sdram_start+i)=0xaa;
}
pass=1;
for(i=0x00000004;i<0x01000000;i++)
{
temp=*(sdram_start+i);
if(temp!=0xaa)
{
pass=0;
//printf("adram error at address:%d,value=%d\n",i,temp);
while(1);
break;
}
}
//if(pass)
// printf("sdram bank0 pass!\n");
///////////////////bank1
for(i=0x01000000;i<0x02000000;i++)
{
*(sdram_start+i)=0xaa;
}
pass=1;
for(i=0x01000000;i<0x02000000;i++)
{
temp=*(sdram_start+i);
if(temp!=0xaa)
{
pass=0;
//printf("adram error at address:%d,value=%d\n",i,temp);
while(1);
break;
}
}
/* //if(pass)
// printf("sdram bank1 pass!\n");
///////////////////bank0
for(i=0x02000000;i<0x03000000;i++)
{
*(sdram_start+i)=0xaa;
}
pass=1;
for(i=0x02000000;i<0x03000000;i++)
{
temp=*(sdram_start+i);
if(temp!=0xaa)
{
pass=0;
//printf("adram error at address:%d,value=%d\n",i,temp);
while(1);
break;
}
}
//if(pass)
//printf("sdram bank2 pass!\n");
///////////////////bank0
for(i=0x03000000;i<0x04000000;i++)
{
*(sdram_start+i)=0xaa;
}
pass=1;
for(i=0x03000000;i<0x04000000;i++)
{
temp=*(sdram_start+i);
if(temp!=0xaa)
{
pass=0;
//printf("adram error at address:%d,value=%d\n",i,temp);
while(1);
break;
}
}
//if(pass)
//printf("sdram bank3 pass!\n"); */
while(1);
return pass;
}
void init_sdram()
{
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x00FF;
*pEBIU_SDRRC = 0x0817;//0x01A0;
*pEBIU_SDBCTL = 0x0013;//0x0025;//0x0025; //1.7 64 MB
*pEBIU_SDGCTL = 0x0091998d;//0x00911989;//0x0091998d;//0x998D0491;
// sdram_test();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -