diff options
| author | Dien-Nhung Nguyen-Phu <kein@kienlab.com> | 2024-05-15 12:43:35 +0700 |
|---|---|---|
| committer | Dien-Nhung Nguyen-Phu <kein@kienlab.com> | 2024-06-03 11:33:00 +0700 |
| commit | 7d7389cac55952fcb794d2632747a8adc1e119ee (patch) | |
| tree | 3a444aff2c9cc739b0f1b10d35af400c53ff9c6c /CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h | |
| parent | 93877fd60df56ff8d621546e0398aa2d86d991a1 (diff) | |
init blink project
generated project from EVT
Diffstat (limited to 'CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h')
| -rw-r--r-- | CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h new file mode 100644 index 0000000..ed1984d --- /dev/null +++ b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_clk.h @@ -0,0 +1,290 @@ +/********************************** (C) COPYRIGHT *******************************
+ * File Name : CH57x_clk.h
+ * Author : WCH
+ * Version : V1.2
+ * Date : 2021/11/17
+ * Description
+ *********************************************************************************
+ * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
+ * Attention: This software (modified or not) and binary are used for
+ * microcontroller manufactured by Nanjing Qinheng Microelectronics.
+ *******************************************************************************/
+
+#ifndef __CH58x_CLK_H__
+#define __CH58x_CLK_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief 系统主频定义
+ */
+typedef enum
+{
+ CLK_SOURCE_LSI = 0x00,
+ CLK_SOURCE_LSE,
+
+ CLK_SOURCE_HSE_16MHz = 0x22,
+ CLK_SOURCE_HSE_8MHz = 0x24,
+ CLK_SOURCE_HSE_6_4MHz = 0x25,
+ CLK_SOURCE_HSE_4MHz = 0x28,
+ CLK_SOURCE_HSE_2MHz = (0x20 | 16),
+ CLK_SOURCE_HSE_1MHz = (0x20 | 0),
+
+ CLK_SOURCE_PLL_80MHz = 0x46,
+ CLK_SOURCE_PLL_60MHz = 0x48,
+ CLK_SOURCE_PLL_48MHz = (0x40 | 10),
+ CLK_SOURCE_PLL_40MHz = (0x40 | 12),
+ CLK_SOURCE_PLL_36_9MHz = (0x40 | 13),
+ CLK_SOURCE_PLL_32MHz = (0x40 | 15),
+ CLK_SOURCE_PLL_30MHz = (0x40 | 16),
+ CLK_SOURCE_PLL_24MHz = (0x40 | 20),
+ CLK_SOURCE_PLL_20MHz = (0x40 | 24),
+ CLK_SOURCE_PLL_15MHz = (0x40 | 0),
+} SYS_CLKTypeDef;
+
+/**
+ * @brief 32K时钟选择
+ */
+typedef enum
+{
+ Clk32K_LSI = 0,
+ Clk32K_LSE,
+
+} LClk32KTypeDef;
+
+/**
+ * @brief 32M晶振电流挡位
+ */
+typedef enum
+{
+ HSE_RCur_75 = 0,
+ HSE_RCur_100,
+ HSE_RCur_125,
+ HSE_RCur_150
+
+} HSECurrentTypeDef;
+
+/**
+ * @brief 32M晶振内部电容挡位
+ */
+typedef enum
+{
+ HSECap_10p = 0,
+ HSECap_12p,
+ HSECap_14p,
+ HSECap_16p,
+ HSECap_18p,
+ HSECap_20p,
+ HSECap_22p,
+ HSECap_24p
+
+} HSECapTypeDef;
+
+/**
+ * @brief 32K晶振电流挡位
+ */
+typedef enum
+{
+ LSE_RCur_70 = 0,
+ LSE_RCur_100,
+ LSE_RCur_140,
+ LSE_RCur_200
+
+} LSECurrentTypeDef;
+
+/**
+ * @brief 32K晶振内部电容挡位
+ */
+typedef enum
+{
+ LSECap_2p = 0,
+ LSECap_13p,
+ LSECap_14p,
+ LSECap_15p,
+ LSECap_16p,
+ LSECap_17p,
+ LSECap_18p,
+ LSECap_19p,
+ LSECap_20p,
+ LSECap_21p,
+ LSECap_22p,
+ LSECap_23p,
+ LSECap_24p,
+ LSECap_25p,
+ LSECap_26p,
+ LSECap_27p
+
+} LSECapTypeDef;
+
+#define MAX_DAY 0x00004000
+#define MAX_2_SEC 0x0000A8C0
+//#define MAX_SEC 0x545FFFFF
+
+#define BEGYEAR 2020
+#define IsLeapYear(yr) (!((yr) % 400) || (((yr) % 100) && !((yr) % 4)))
+#define YearLength(yr) (IsLeapYear(yr) ? 366 : 365)
+#define monthLength(lpyr, mon) (((mon) == 1) ? (28 + (lpyr)) : (((mon) > 6) ? (((mon) & 1) ? 31 : 30) : (((mon) & 1) ? 30 : 31)))
+
+/**
+ * @brief rtc timer mode period define
+ */
+typedef enum
+{
+ Period_0_125_S = 0, // 0.125s 周期
+ Period_0_25_S, // 0.25s 周期
+ Period_0_5_S, // 0.5s 周期
+ Period_1_S, // 1s 周期
+ Period_2_S, // 2s 周期
+ Period_4_S, // 4s 周期
+ Period_8_S, // 8s 周期
+ Period_16_S, // 16s 周期
+} RTC_TMRCycTypeDef;
+
+/**
+ * @brief rtc interrupt event define
+ */
+typedef enum
+{
+ RTC_TRIG_EVENT = 0, // RTC 触发事件
+ RTC_TMR_EVENT, // RTC 周期定时事件
+
+} RTC_EVENTTypeDef;
+
+/**
+ * @brief rtc interrupt event define
+ */
+typedef enum
+{
+ RTC_TRIG_MODE = 0, // RTC 触发模式
+ RTC_TMR_MODE, // RTC 周期定时模式
+
+} RTC_MODETypeDef;
+
+typedef enum
+{
+ /* 校准精度越高,耗时越长 */
+ Level_32 = 3, // 用时 1.2ms 1000ppm (32M 主频) 1100ppm (60M 主频)
+ Level_64, // 用时 2.2ms 800ppm (32M 主频) 1000ppm (60M 主频)
+ Level_128, // 用时 4.2ms 600ppm (32M 主频) 800ppm (60M 主频)
+
+} Cali_LevelTypeDef;
+
+/**
+ * @brief 32K 低频时钟来源
+ *
+ * @param hc - 选择32K使用内部还是外部
+ */
+void LClk32K_Select(LClk32KTypeDef hc);
+
+/**
+ * @brief HSE晶体 偏置电流配置
+ *
+ * @param c - 75%,100%,125%,150%
+ */
+void HSECFG_Current(HSECurrentTypeDef c);
+
+/**
+ * @brief HSE晶体 负载电容配置
+ *
+ * @param c - refer to HSECapTypeDef
+ */
+void HSECFG_Capacitance(HSECapTypeDef c);
+
+/**
+ * @brief LSE晶体 偏置电流配置
+ *
+ * @param c - 70%,100%,140%,200%
+ */
+void LSECFG_Current(LSECurrentTypeDef c);
+
+/**
+ * @brief LSE晶体 负载电容配置
+ *
+ * @param c - refer to LSECapTypeDef
+ */
+void LSECFG_Capacitance(LSECapTypeDef c);
+
+void Calibration_LSI(Cali_LevelTypeDef cali_Lv); /* 用主频校准内部32K时钟 */
+
+/**
+ * @brief RTC时钟初始化当前时间
+ *
+ * @param y - 配置年,MAX_Y = BEGYEAR + 44
+ * @param mon - 配置月,MAX_MON = 12
+ * @param d - 配置日,MAX_D = 31
+ * @param h - 配置小时,MAX_H = 23
+ * @param m - 配置分钟,MAX_M = 59
+ * @param s - 配置秒,MAX_S = 59
+ */
+void RTC_InitTime(uint16_t y, uint16_t mon, uint16_t d, uint16_t h, uint16_t m, uint16_t s);
+
+/**
+ * @brief 获取当前时间
+ *
+ * @param py - 获取到的年,MAX_Y = BEGYEAR + 44
+ * @param pmon - 获取到的月,MAX_MON = 12
+ * @param pd - 获取到的日,MAX_D = 31
+ * @param ph - 获取到的小时,MAX_H = 23
+ * @param pm - 获取到的分钟,MAX_M = 59
+ * @param ps - 获取到的秒,MAX_S = 59
+ */
+void RTC_GetTime(uint16_t *py, uint16_t *pmon, uint16_t *pd, uint16_t *ph, uint16_t *pm, uint16_t *ps);
+
+/**
+ * @brief 基于LSE/LSI时钟,配置当前RTC 周期数
+ *
+ * @param cyc - 配置周期计数初值,MAX_CYC = 0xA8BFFFFF = 2831155199
+ */
+void RTC_SetCycle32k(uint32_t cyc);
+
+/**
+ * @brief 基于LSE/LSI时钟,获取当前RTC 周期数
+ *
+ * @return 当前周期数,MAX_CYC = 0xA8BFFFFF = 2831155199
+ */
+uint32_t RTC_GetCycle32k(void);
+
+/**
+ * @brief RTC定时模式配置(注意定时基准固定为32768Hz)
+ *
+ * @param t - refer to RTC_TMRCycTypeDef
+ */
+void RTC_TRIGFunCfg(uint32_t cyc);
+
+/**
+ * @brief RTC定时模式配置(注意定时基准固定为32768Hz)
+ *
+ * @param t - refer to RTC_TMRCycTypeDef
+ */
+void RTC_TMRFunCfg(RTC_TMRCycTypeDef t);
+
+/**
+ * @brief RTC 模式功能关闭
+ *
+ * @param m - 需要关闭的当前模式
+ */
+void RTC_ModeFunDisable(RTC_MODETypeDef m);
+
+/**
+ * @brief 获取RTC中断标志
+ *
+ * @param f - refer to RTC_EVENTTypeDef
+ *
+ * @return 中断标志状态
+ */
+uint8_t RTC_GetITFlag(RTC_EVENTTypeDef f);
+
+/**
+ * @brief 清除RTC中断标志
+ *
+ * @param f - refer to RTC_EVENTTypeDef
+ */
+void RTC_ClearITFlag(RTC_EVENTTypeDef f);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __CH58x_CLK_H__
|