system_ES8P508x.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *文件名: system_ES8P508x.c
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: 库函数配置文件
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "system_ES8P508x.h"
  12. #include "lib_config.h"
  13. uint32_t SystemCoreClock = 48000000;
  14. /***************************************************************
  15. 函数名:SystemCoreClockUpdate
  16. 描 述:系统时钟配置为内部时钟20MHZ,同时设置SystemCoreClock
  17. 输入值:无
  18. 输出值:无
  19. 返回值:无
  20. ***************************************************************/
  21. void SystemCoreClockUpdate (void)
  22. {
  23. uint32_t Prot_Temp;
  24. uint16_t Count=0;
  25. SystemClockSelect(SCU_SysClk_HRC , CLK_SEL_HRC); //选择系统时钟为HRC时钟
  26. PLLClock_Config(DISABLE, SCU_PLL_HRC, SCU_PLL_48M,ENABLE); //PLL禁止
  27. Prot_Temp = SCU->PROT.PROT;
  28. if(Prot_Temp != 0) //写保护了
  29. {SCU->PROT.Word = 0x55AA6996;} //解锁
  30. SCU->SCLKEN1.HRC_EN = 1; //使能内部20MHZ
  31. do
  32. {
  33. Count++;
  34. }
  35. while((SCU->SCLKEN1.HRC_RDY == 0)&&(Count != 0xFFF)); //等待时钟开启
  36. if(Count == 0xFFF)
  37. {
  38. return ;
  39. }
  40. SCU->SCLKEN0.SYSCLK_DIV = 0; //系统时钟后分频1:1
  41. switch(SCU->SCLKEN0.CLK_SEL)
  42. {
  43. case 0:
  44. SystemCoreClock = 20000000; //HRC
  45. break;
  46. case 1:
  47. SystemCoreClock = 32000; //LRC
  48. break;
  49. default:
  50. break;
  51. }
  52. if(Prot_Temp != 0) //写保护了
  53. {SCU->PROT.Word = 0x00000000;} //打开写保护
  54. }
  55. /***************************************************************
  56. 函数名:SystemInit
  57. 描 述:系统初始化,设置时钟
  58. 输入值:无
  59. 输出值:无
  60. 返回值:无
  61. ***************************************************************/
  62. void SystemInit (void)
  63. {
  64. SystemCoreClockUpdate();
  65. }
  66. /*************************END OF FILE**********************/