#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(); //´ò¿ªÈ«¾ÖÖжÏʹÄÜ
|
}
|