»ùÓÚÎïÁªÍøµÄ°²±£ÏµÍ³Èí¼þÉè¼Æ-²â¿ØÄ£¿é_±ÏÒµÂÛÎÄ ÏÂÔØ±¾ÎÄ

Î÷°²Å·ÑÇѧԺ±¾¿Æ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

5.3 ϵͳ³õ»¯Éè¼Æ

£¨1£© ³ÌÐòÁ÷³Ìͼ

ͼ5-2 ϵͳ³õʼ»¯

£¨2£© ³ÌÐòÔ´´úÂë void system_init() {

/*VPB·ÖƵϵÊýÅäÖÃ*/

PLLCON=1; //PLLʹÄÜ£¨¿ªÆô£©

#if((Fcclk/4)/Fpclk)==1 //VPB×ÜÏßʱÖÓΪ´¦ÀíÆ÷ʱÖÓµÄ1/4ʱ VPBDIV=0; //VPB·ÖƵÆ÷ÉèÖÃΪ0 #endif

#if((Fcclk/4)/Fpclk)==2 //VPB×ÜÏßʱÖÓΪ´¦ÀíÆ÷ʱÖÓµÄ1/2ʱ VPBDIV=2; //VPB·ÖƵÆ÷ÉèÖÃΪ2 #endif

#if((Fcclk/4)/Fpclk)==4 //VPB×ÜÏßʱÖÓÓë´¦ÀíÆ÷ʱÖÓÏàͬ VPBDIV=1; //VPB·ÖƵÆ÷ÉèÖÃΪ1 #endif

/*PLL ±¶Æµ/·ÖƵֵ×Ô¶¯ÅäÖÃ*/

25

Î÷°²Å·ÑÇѧԺ±¾¿Æ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

#if(Fcco/Fcclk)==2 //Á÷¿ØÕñµ´ÆµÂÊÊÇϵͳƵÂʵÄ2±¶Ê± PLLCFG=((Fcclk/Fosc)-1)|(0<<5); //PLLCFGÅäÖüĴæÆ÷£¬4:0 PLL±¶ÆµÆ÷Öµ£¬6:3 ·ÖƵÆ÷Öµ¡£

#endif

#if(Fcco/Fcclk)==4

PLLCFG=((Fcclk/Fosc)-1)|(1<<5); #endif

#if(Fcco/Fcclk)==8

PLLCFG=((Fcclk/Fosc)-1)|(2<<5); #endif

#if (Fcco/Fcclk)==16

PLLCFG=((Fcclk/Fosc)-1)|(3 << 5); #endif

PLLFEED=0xaa; //PLLÀ¡ËͼĴæÆ÷ʹPLLCOM/PLLCFGµÄÖµ¸ü¸ÄÉúЧ¡£

PLLFEED=0x55;

while((PLLSTAT&(1<<10))==0); //µÈ´ýPLLËø´æ

PLLCON=3; //½«PLL×÷ΪʱÖÓÔ´Á¬½Óµ½Î¢¿ØÖÆÆ÷¡£ PLLFEED=0xaa; PLLFEED=0x55; //´æ´¢Æ÷¼ÓËÙÅäÖà MAMCR=0; #if Fcclk<20000000 MAMTIM=1; #else

#if Fcclk<40000000 MAMTIM=2; #else

MAMTIM=3; #endif #endif

MAMCR=2;

//VIC³õʼ»¯ VICIntSelect=0;

26

Î÷°²Å·ÑÇѧԺ±¾¿Æ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

VICIntEnClear=0xFFFFFFFF; VICSoftIntClear=0xFFFFFFFF; VICProtection=0; VICVectAddr=0; VICDefVectAddr=0; }

5.4 UARTO³õʼ»¯

£¨1£© ³ÌÐòÁ÷³Ìͼ

ͼ5-3 ³ÌÐòÁ÷³Ìͼ

£¨2£© ³ÌÐòÔ´´úÂë void uart0_init() {

uint32 baud=115200;

U0LCR=0x83; //Êý¾Ý¸ñʽÉèÖã¨×Ö³¤¡¢Í£Ö¹Î»¡¢ÆæÅ¼Ñ¡Ôñ/УÑé룩/³ýÊýËø´æÆ÷·ÃÎÊʹÄÜ¡£

U0DLM=((Fpclk/16)/baud)/256; //³ýÊýËø´æÆ÷¸ß×Ö½Ú¼ÆËã¡£ U0DLL=((Fpclk/16)/baud)%6; //³ýÊýËø´æÆ÷µÍ×Ö½Ú¼ÆËã¡£

U0LCR=0x03; //Êý¾Ý¸ñʽÉèÖÃ/³ýÊýËø´æ¼Ä´æÆ÷·ÃÎʽûÄÜ¡£

}

5.5 GPIOÄ£¿é³ÌÐò

27

Î÷°²Å·ÑÇѧԺ±¾¿Æ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

GPIO¿ØÖÆ·äÃùÆ÷³ÌÐò´úÂ룺 void DelayNS(uint32 dly) { uint32 i; for(;dly>;dly--£© for(i=0;<5000;i++) }

/******************************* Ãû³Æ main£¨£© ¹¦ÄÜ ¿ØÖÆ·äÃùÆ÷ ·äÃù ******************************* int main(void) {

PINSEL0=0x00000000; IO0DIR=BEEPCON; while(1) {

IO0SET=BEEPCON; DelayNS(10); IO0CLR=BEEPCON; DelayNS(10); } return(0); }

5.6 RTCÄ£¿é

ʵʱʱÖÓÈÕÀúRTC³ÌÐò´úÂ룺 int main (void) {

TargetResetInit();

/* ³õʼ»¯ RTCÄ£¿é */ RTCInit();

local_time.RTC_Sec = 0;

28