/***************************************************************
*Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
*文件名：  system_ES8P508x.c
*作  者：  Liut
*版  本：  V1.00
*日  期：  2017/07/14
*描  述：  库函数配置文件
*备  注：
           本软件仅供学习和演示使用，对用户直接引用代码所带来的风险或后果不承担任何法律责任。
***************************************************************/
#include "system_ES8P508x.h"
#include "ES8P508x.h"
#include "lib_config.h"
#include "lib_scu.h"
#include "lib_gpio.h"

uint32_t SystemCoreClock = 20000000;


/***************************************************************
函数名：SystemCoreClockUpdate
描  述：系统时钟配置为内部时钟20MHZ，同时设置SystemCoreClock
输入值：无
输出值：无
返回值：无
***************************************************************/
void SystemCoreClockUpdate(void)
{
    uint32_t Prot_Temp;
    uint16_t Count = 0;
    SystemClockSelect(CLK_SEL_HRC);        //选择系统时钟为HRC时钟
    PLLClock_Config(DISABLE, SCU_PLL_HRC, SCU_PLL_48M, ENABLE);   //PLL禁止
    Prot_Temp = SCU->PROT.PROT;

    if (Prot_Temp != 0)                                     //写保护了
    {
        SCU->PROT.Word = 0x55AA6996; //解锁
    }

    SCU->SCLKEN1.HRC_EN = 1;                                //使能内部20MHZ

    do
    {
        Count++;
    }
    while ((SCU->SCLKEN1.HRC_RDY == 0) && (Count != 0xFFF)); //等待时钟开启

    if (Count == 0xFFF)
    {
        return ;
    }

    SCU->SCLKEN0.SYSCLK_DIV = 0;                            //系统时钟后分频1:1

    switch (SCU->SCLKEN0.CLK_SEL)
    {
        case 0:
            SystemCoreClock = 20000000;                     //HRC
            break;

        case 1:
            SystemCoreClock = 32000;                        //LRC
            break;

        default:
            break;
    }

    if (Prot_Temp != 0)                                     //写保护了
    {
        SCU->PROT.Word = 0x00000000; //打开写保护
    }
}

/***************************************************************
函数名：SystemInit
描  述：系统初始化，设置时钟
输入值：无
输出值：无
返回值：无
***************************************************************/
void SystemInit(void)
{
    SystemCoreClockUpdate();
}

/*************************END OF FILE**********************/
