光盘里自带的myled程序,运行后四个灯同时亮灭,还发出嘟嘟嘟的叫声,看了半天程序,不明白为什么会叫,下面是源程序,我把注释掉的去掉了,再以自己的理解加了点注释,希望懂的人指点一二,谢谢!
void __rt_lib_init(void);
void dely(U32 tt)
{
U32 i;
for(;tt>0;tt--)
{
for(i=0;i<10000;i++){}
}
}
int Main(int argc, char **argv)
{
int i;
U8 key;
U32 mpll_val=0;
#if ADS10
__rt_lib_init(); //for ADS 1.0
#endif
i = 2 ; //hzh, don't use 100M!
//boot_params.cpu_clk.val = 3;
switch ( i ) {
case 0: //200
key = 12;
mpll_val = (92<<12)|(4<<4)|(1);
break;
case 1: //300
key = 13;
mpll_val = (67<<12)|(1<<4)|(1);
break;
case 2: //400
key = 14;
mpll_val = (92<<12)|(1<<4)|(1);
break;
case 3: //440!!!
key = 14;
mpll_val = (102<<12)|(1<<4)|(1);
break;
default:
key = 14;
mpll_val = (92<<12)|(1<<4)|(1);
break;
}
//init FCLK=400M, so change MPLL first
ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3); //初始化MPLLCON
ChangeClockDivider(key, 12); //初始化CLKDIVN
MMU_DisableICache(); //禁止使用ICache,DCache
MMU_DisableDCache();
Uart_Init(0,115200); //初始化Uart
Uart_Select(0);
Uart_SendString("hello,qq2440\n");
Uart_Printf("hello,qq2440, printf\n");
rGPBCON = 0x00555555; //初始化GPBCON和GPBDAT
rGPBDAT = 0x0000;
rGPBDAT = 0x0ffffff;
while(1) //使四个灯同时亮灭,并有一定的延时
{
rGPBDAT = 0x0000;
dely(120);
rGPBDAT = 0x0ffffff;
dely(120);
}
return 0;
}