rt-thread-official/bsp/essemi/es8p508x/libraries/CMSIS/system_ES8P508x.c

77 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/***************************************************************
*Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
*文件名: system_ES8P508x.c
*作 者: Liut
*版 本: V1.00
*日 期: 2017/07/14
*描 述: 库函数配置文件
*备 注: 适用于 ES8P508x芯片
本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
***************************************************************/
#include "system_ES8P508x.h"
#include "lib_config.h"
uint32_t SystemCoreClock = 48000000;
/***************************************************************
函数名SystemCoreClockUpdate
描 述系统时钟配置为内部时钟20MHZ同时设置SystemCoreClock
输入值:无
输出值:无
返回值:无
***************************************************************/
void SystemCoreClockUpdate (void)
{
uint32_t Prot_Temp;
uint16_t Count=0;
SystemClockSelect(SCU_SysClk_HRC , 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**********************/