clock.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * @file clock.h
  3. * @author chipsea
  4. * @brief
  5. * @version 0.1
  6. * @date 2020-11-30
  7. * @copyright Copyright (c) 2020, CHIPSEA Co., Ltd.
  8. * @note
  9. */
  10. #ifndef _HAL_CLOCK_H
  11. #define _HAL_CLOCK_H
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #include "types.h"
  16. #include "cst92f2x.h"
  17. //#include "common.h"
  18. typedef enum{
  19. CLK_32K_XTAL = 0,
  20. CLK_32K_RCOSC = 1,
  21. }CLK32K_e;
  22. typedef enum{
  23. XTAL_16M = 0,
  24. DBL_B_32M = 1,
  25. DBL_32 = 2,
  26. DLL_32M = 3,
  27. }ClkSrc_e;
  28. typedef enum _SYSCLK_SEL {
  29. SYS_CLK_RC_32M = 0,
  30. SYS_CLK_DLL_32M = 1,
  31. SYS_CLK_XTAL_16M = 2,
  32. SYS_CLK_DLL_48M = 3,
  33. SYS_CLK_DLL_64M = 4,
  34. SYS_CLK_DLL_96M = 5,
  35. SYS_CLK_8M = 6,
  36. SYS_CLK_4M = 7,
  37. SYS_CLK_NUM = 8,
  38. }sysclk_t;
  39. typedef enum{
  40. HCLK_CHANGE = 0,
  41. AP_CLK_CHANGE = 1,
  42. CP_CLK_CHANGE = 2,
  43. } clk_update_Type_t;
  44. typedef struct _clk_Evt_t{
  45. uint8_t flag;
  46. }clk_Evt_t;
  47. typedef void (*clk_Hdl_t)(clk_Evt_t* pev);
  48. typedef struct _clk_Contex_t{
  49. bool enable;
  50. clk_Hdl_t evt_handler;
  51. }clk_Ctx_t;
  52. #define CLAER_RTC_COUNT AP_AON->RTCCTL |= BIT(1)
  53. #define RUN_RTC AP_AON->RTCCTL |= BIT(0)
  54. #define STOP_RTC AP_AON->RTCCTL &= ~BIT(0)
  55. #define hal_system_init clk_init
  56. extern volatile uint32_t g_hclk;
  57. #define clk_get_hclk() g_hclk
  58. uint32_t clk_get_pclk(void);
  59. void hal_clk_gate_enable(MODULE_e module);
  60. void hal_clk_gate_disable(MODULE_e module);
  61. int hal_clk_gate_get(MODULE_e module);
  62. void hal_clk_get_modules_state(uint32_t* buff);
  63. void hal_clk_reset(MODULE_e module);
  64. void hal_clk_rf_config(ClkSrc_e sel);
  65. void hal_clk_rxadc_config(ClkSrc_e sel);
  66. bool hal_clk_set_pclk(uint32_t div);
  67. int hal_clk_init(sysclk_t hclk_sel,clk_Hdl_t evt_handler);
  68. void hal_rtc_clock_config(CLK32K_e clk32Mode);
  69. uint32_t hal_systick(void);
  70. uint32_t hal_ms_intv(uint32_t tick);
  71. extern uint32_t rtc_get_counter(void);
  72. void WaitMs(uint32_t msecond);
  73. void WaitUs(uint32_t wtTime);
  74. void hal_system_soft_reset(void);
  75. extern int clk_init(sysclk_t h_system_clk_sel);
  76. extern void WaitRTCCount(uint32_t rtcDelyCnt);
  77. extern int clk_spif_ref_clk(sysclk_t spif_ref_sel);
  78. extern uint32_t getMcuPrecisionCount(void);
  79. void hal_rfPhyFreqOff_Set(void);
  80. void hal_xtal16m_cap_Set(void);
  81. void hal_rc32k_clk_tracking_init(void);
  82. extern uint8_t get_ic_version(void);
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif