| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /***************************************************************
- *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**********************/
|