CH57x_clk.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #ifndef __CH57x_CLK_H__
  2. #define __CH57x_CLK_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "CH579SFR.h"
  7. #include "core_cm0.h"
  8. typedef enum
  9. {
  10. CLK_SOURCE_LSI = 0,
  11. CLK_SOURCE_LSE,
  12. CLK_SOURCE_HSE_32MHz,
  13. CLK_SOURCE_HSE_16MHz,
  14. CLK_SOURCE_HSE_8MHz,
  15. CLK_SOURCE_HSI_32MHz, //上电默认情况
  16. CLK_SOURCE_HSI_16MHz,
  17. CLK_SOURCE_HSI_8MHz,
  18. CLK_SOURCE_PLL_40MHz,
  19. CLK_SOURCE_PLL_32MHz,
  20. CLK_SOURCE_PLL_24MHz,
  21. CLK_SOURCE_PLL_20MHz,
  22. CLK_SOURCE_PLL_16MHz,
  23. }SYS_CLKTypeDef;
  24. typedef enum
  25. {
  26. Clk32M_HSI = 0,
  27. Clk32M_HSE,
  28. }HClk32MTypeDef;
  29. typedef enum
  30. {
  31. Clk32K_LSI = 0,
  32. Clk32K_LSE,
  33. }LClk32KTypeDef;
  34. typedef enum
  35. {
  36. HSE_RCur_75 = 0,
  37. HSE_RCur_100,
  38. HSE_RCur_125,
  39. HSE_RCur_150
  40. }HSECurrentTypeDef;
  41. typedef enum
  42. {
  43. HSECap_10p = 0,
  44. HSECap_12p, HSECap_14p, HSECap_16p, HSECap_18p,
  45. HSECap_20p, HSECap_22p, HSECap_24p
  46. }HSECapTypeDef;
  47. typedef enum
  48. {
  49. LSE_RCur_70 = 0,
  50. LSE_RCur_100,
  51. LSE_RCur_140,
  52. LSE_RCur_200
  53. }LSECurrentTypeDef;
  54. typedef enum
  55. {
  56. LSECap_2p = 0,
  57. LSECap_13p, LSECap_14p, LSECap_15p, LSECap_16p,
  58. LSECap_17p, LSECap_18p, LSECap_19p, LSECap_20p,
  59. LSECap_21p, LSECap_22p, LSECap_23p, LSECap_24p,
  60. LSECap_25p, LSECap_26p, LSECap_27p
  61. }LSECapTypeDef;
  62. #define MAX_DAY 0x00004000
  63. #define MAX_2_SEC 0x0000A8C0
  64. //#define MAX_SEC 0x545FFFFF
  65. #define BEGYEAR 2020
  66. #define IsLeapYear(yr) (!((yr) % 400) || (((yr) % 100) && !((yr) % 4)))
  67. #define YearLength(yr) (IsLeapYear(yr) ? 366 : 365)
  68. #define monthLength(lpyr,mon) ((mon==1) ? (28+lpyr) : ((mon>6) ? ((mon&1)?31:30) : ((mon&1)?30:31)))
  69. /**
  70. * @brief rtc timer mode period define
  71. */
  72. typedef enum
  73. {
  74. Period_0_125_S = 0, // 0.125s 周期
  75. Period_0_25_S, // 0.25s 周期
  76. Period_0_5_S, // 0.5s 周期
  77. Period_1_S, // 1s 周期
  78. Period_2_S, // 2s 周期
  79. Period_4_S, // 4s 周期
  80. Period_8_S, // 8s 周期
  81. Period_16_S, // 16s 周期
  82. }RTC_TMRCycTypeDef;
  83. /**
  84. * @brief rtc interrupt event define
  85. */
  86. typedef enum
  87. {
  88. RTC_TRIG_EVENT = 0, // RTC 触发事件
  89. RTC_TMR_EVENT, // RTC 周期定时事件
  90. }RTC_EVENTTypeDef;
  91. /**
  92. * @brief rtc interrupt event define
  93. */
  94. typedef enum
  95. {
  96. RTC_TRIG_MODE = 0, // RTC 触发模式
  97. RTC_TMR_MODE, // RTC 周期定时模式
  98. }RTC_MODETypeDef;
  99. void SystemInit(void); /* 系统时钟初始化 */
  100. void SetSysClock( SYS_CLKTypeDef sc); /* 重设系统运行时钟 */
  101. UINT32 GetSysClock( void ); /* 获取当前系统时钟 */
  102. void HClk32M_Select( HClk32MTypeDef hc); /* 32M 高频时钟来源 */
  103. void LClk32K_Select( LClk32KTypeDef hc); /* 32K 低频时钟来源 */
  104. void HSECFG_Current( HSECurrentTypeDef c ); /* HSE晶体 偏置电流配置 */
  105. void HSECFG_Capacitance( HSECapTypeDef c ); /* HSE晶体 负载电容配置 */
  106. void LSECFG_Current( LSECurrentTypeDef c ); /* LSE晶体 偏置电流配置 */
  107. void LSECFG_Capacitance( LSECapTypeDef c ); /* LSE晶体 负载电容配置 */
  108. UINT16 Calibration_LSI( void ); /* 外部32M时钟校准内部32K时钟 */
  109. void RTC_InitTime( UINT16 y, UINT16 mon, UINT16 d, UINT16 h, UINT16 m, UINT16 s ); /* RTC时钟初始化当前时间 */
  110. void RTC_GetTime( PUINT16 py, PUINT16 pmon, PUINT16 pd, PUINT16 ph, PUINT16 pm, PUINT16 ps ); /* 获取当前时间 */
  111. void RTC_SetCycle32k( UINT32 cyc ); /* 基于LSE/LSI时钟,配置当前RTC 周期数 */
  112. UINT32 RTC_GetCycle32k( void ); /* 基于LSE/LSI时钟,获取当前RTC 周期数 */
  113. void RTC_TRIGFunCfg( UINT32 cyc ); /* RTC触发模式配置间隔时间,基于LSE/LSI时钟,匹配周期数 */
  114. void RTC_TMRFunCfg( RTC_TMRCycTypeDef t ); /* RTC定时模式配置 */
  115. void RTC_ModeFunDisable( RTC_MODETypeDef m ); /* RTC 模式功能关闭 */
  116. UINT8 RTC_GetITFlag( RTC_EVENTTypeDef f ); /* 获取RTC中断标志 */
  117. void RTC_ClearITFlag( RTC_EVENTTypeDef f ); /* 清除RTC中断标志 */
  118. #ifdef __cplusplus
  119. }
  120. #endif
  121. #endif // __CH57x_CLK_H__