forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-03 71f8bdb7c63acc381d71105bb950411029f4250f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#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();                //´ò¿ªÈ«¾ÖÖжÏʹÄÜ
}