#include "define_all.h" #include "rcc_config.h" void DEBUG_Init(void) { DBG->CR =0x3; //DEBUGʱ¹Ø±ÕIWDT WWDT±£³ÖÆäËû¶¨Ê±Æ÷Ô­À´µÄ״̬ } //¸ü¸ÄϵͳÖ÷ƵΪ64M,Íⲿ¾§ÌåXTHF±¶Æµ void rcc_configration(void) { uint32_t i=0; CMU_PLL_H_InitTypeDef pll_h_struct; CMU->PCLKCR1 |= 0x1 << 7; //PAD×ÜÏßʱÖÓʹÄÜ GPIOF->FCR |=0x3C; //PF1ºÍPF2ÅäÖÃÄ£Ä⹦ÄÜ //ʹÄÜXTHF CMU_XTHFCR_XTHFEN_Setable(ENABLE); //ʹÄÜXTHF CMU_XTHFCR_XTHF_CFG_Set(CMU_XTHFCR_XTHF_CFG_MAX); //Õñµ´Ç¿¶ÈÑ¡Ôñ×îÇ¿ delay_ms(3);//ÆðÕñÐèҪʱ¼ä ///*ϵͳʱÖÓ³¬¹ý24MºóÐèÒª´ò¿ªwait*/ FLS_RDCR_WAIT_Set(FLS_RDCR_WAIT_2CYCLE); IWDT_Clr(); //PLLÅäÖà ϵͳʱÖÓʹÓÃPLLµÄʱºò·Å¿ª // CMU->PLLHCR |= 0x1 << 1; //PLLHÊäÈëÑ¡ÔñXTHF // // CMU_PLLHCR_REFPRSC_Set(CMU_PLLHCR_REFPRSC_DIV8);//8M¾§Ìå·ÖƵµ½1M,ÆäËû¾§ÌåÐèÒªÐÞ¸Ä·ÖÆµÏµÊý // // CMU->PLLHCR &= ~(0x3ff << 16); // CMU->PLLHCR |= 0x3f << 16; //PLLHÉýÖÁ64M // // CMU_PLLHCR_EN_Setable(ENABLE); //ʹÄÜPLLH // // while(!CMU_PLLHCR_LOCKED_Chk()) //µÈ´ýPLL½¨Á¢ // { // if(i>=6400) //³¬Ê±Éè¼Æ£¬¸ù¾ÝÖ÷ʱÖÓÑ¡Ôñ²»Í¬Öµ£¬Àý³ÌÊÇ8M // { // break; // } // i++; // } //ϵͳʱÖÓÖ±½ÓʹÓÃXTHF while(!CMU_ISR_HFDETO_Chk()) { if(i>=6400) //³¬Ê±Éè¼Æ£¬¸ù¾ÝÖ÷ʱÖÓÑ¡Ôñ²»Í¬Öµ£¬Àý³ÌÊÇ8M { break; } i++; } // CMU_SYSCLKCR_SYSCLKSEL_Set(CMU_SYSCLKCR_SYSCLKSEL_PLL_H); //ϵͳʱÖÓÔ´Ñ¡ÔñPLL CMU_SYSCLKCR_SYSCLKSEL_Set(CMU_SYSCLKCR_SYSCLKSEL_XTHF); //ϵͳʱÖÓÔ´Ñ¡ÔñXTHF CMU_SYSCLKCR_AHBPRES_Set(CMU_SYSCLKCR_AHBPRES_DIV1); CMU_SYSCLKCR_APBPRES_Set(CMU_SYSCLKCR_APBPRES_DIV1); CMU_SYSCLKCR_SLP_ENEXTI_Setable(ENABLE);//ÐÝÃßʱ²»¹Ø±ÕÖжϿڲÉÑù delay_init(SYSCLOCK_U); } void System_power_on_init(void) { /*»ù´¡ÏµÍ³ÅäÖÃ*/ __disable_irq(); //¹Ø±ÕÈ«¾ÖÖжÏʹÄÜ IWDT_Init(); //ϵͳ¿´ÃŹ·ÉèÖà £¨º¯ÊýÐèÒªÍêÉÆ£© delay_init(__SYSTEM_CLOCK); //cpuµÎ´ð¶¨Ê±Æ÷ÅäÖÃ(Èí¼þÑÓʱÓÃ) //´ËʱʱÖÓ»¹ÊÇRCHF delay_ms(10); //Èí¼þÑÓʱ,ϵͳÉϵçºó²»ÒªÁ¢¿Ì½«Ê±ÖÓÇл»Îª·ÇRCHF8M£¬Ò²²»ÒªÁ¢¿Ì½øÐÝÃß·ñÔò¿ÉÄܵ¼ÖÂÎÞ·¨ÏÂÔØ³ÌÐò Init_SysClk_Gen(); //ϵͳʱÖÓÅäÖà TXHF /*ϵ縴λÅäÖÃ*/ //pdrºÍborÁ½¸öϵ縴λÖÁÉÙÒª´ò¿ªÒ»¸ö //µ±µçÔ´µçѹµÍÓÚϵ縴λµçѹʱ£¬Ð¾Æ¬»á±»¸´Î»×¡ //pdrµçѹµµÎ»²»×¼µ«Êǹ¦ºÄ¼«µÍ£¨¼¸ºõÎÞ·¨²âÁ¿£© //borµçѹµµÎ»×¼È·µ«ÊÇÐèÒªÔö¼Ó2uA¹¦ºÄ RMU_PDRCR_PDREN_Setable(ENABLE); //´ò¿ªPDR RMU_BORCR_BOR_PDRCFG_Set(RMU_BORCR_BOR_PDRCFG_1P75V); RMU_BORCR_OFF_BOR_Setable(DISABLE); //´ò¿ªBOR DEBUG_Init(); /*RTCÊýÖµµ÷Õû¼Ä´æÆ÷*/ /*µ÷Уֵ¸´Î»ºóÊǸöËæ»úÊý£¬Éϵçºó¿ÉÄÜÊǸö½Ï´óµÄÖµÓ°ÏìRTC¾«¶È*/ /*ÈçÓ¦ÓÃÖÐûÓÐRTCµ÷У£¬ÐèÒª½«ÕâЩעÊÍ·Å¿ª*/ // CMU_PERCLK_SetableEx(RTCCLK, ENABLE); // RTC_ADJUST_Write(0);//RTCʱÖÓζȲ¹³¥ÖµÐ´0£¬¼ÙÈç²»²Ù×÷µ÷Õû¼Ä´æÆ÷£¬²¹³¥Öµ»áÊÇÒ»¸öËæ»úÊý£¬RTCʱÖÓ¿ÉÄÜ»áÆ«²î·Ç³£´ó // CMU_PERCLK_SetableEx(RTCCLK, DISABLE); CMU_PERCLK_SetableEx(PADCLK, ENABLE); //ĬÈÏ´ò¿ª°É Ö»ÒªÓõ½GPIO¶¼ÐèÒª´ò¿ªÕâ¸ö IWDT_Clr(); //Çåϵͳ¿´ÃŹ· __enable_irq(); //´ò¿ªÈ«¾ÖÖжÏʹÄÜ }