| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /********************************** (C) COPYRIGHT *******************************
- * File Name : ch32v20x_rtc.h
- * Author : WCH
- * Version : V1.0.0
- * Date : 2021/06/06
- * Description : This file contains all the functions prototypes for the RTC
- * firmware library.
- *********************************************************************************
- * 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 __CH32V20x_RTC_H
- #define __CH32V20x_RTC_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "ch32v20x.h"
- typedef enum
- {
- Level_32 = 2,
- Level_64,
- Level_128,
- } Cali_LevelTypeDef;
- /* RTC_interrupts_define */
- #define RTC_IT_OW ((uint16_t)0x0004) /* Overflow interrupt */
- #define RTC_IT_ALR ((uint16_t)0x0002) /* Alarm interrupt */
- #define RTC_IT_SEC ((uint16_t)0x0001) /* Second interrupt */
- /* RTC_interrupts_flags */
- #define RTC_FLAG_RTOFF ((uint16_t)0x0020) /* RTC Operation OFF flag */
- #define RTC_FLAG_RSF ((uint16_t)0x0008) /* Registers Synchronized flag */
- #define RTC_FLAG_OW ((uint16_t)0x0004) /* Overflow flag */
- #define RTC_FLAG_ALR ((uint16_t)0x0002) /* Alarm flag */
- #define RTC_FLAG_SEC ((uint16_t)0x0001) /* Second flag */
- #if defined(CH32V20x_D8) || defined(CH32V20x_D8W)
- #define RB_OSC32K_HTUNE (0x1FE0)
- #define RB_OSC32K_LTUNE (0x1F)
- #define RB_OSC_CAL_HALT (0x80)
- #define RB_OSC_CAL_EN (0x02)
- #define RB_OSC_CAL_INT_EN (0x01)
- #define RB_OSC_CAL_OV_CNT (0xFF)
- #define RB_OSC_CAL_IF_END (1 << 15)
- #define RB_OSC_CAL_CNT_OV (1 << 14)
- #define RB_OSC_CAL_CNT (0x3FFF)
- #define RB_CAL_LP_EN (1 << 6)
- #define RB_CAL_WKUP_EN (1 << 5)
- #define RB_OSC_HALT_MD (1 << 4)
- #define RB_OSC_CNT_VLU (0x0F)
- #ifdef CLK_OSC32K
- #if ( CLK_OSC32K == 1 )
- #define CAB_LSIFQ 32000
- #else
- #define CAB_LSIFQ 32768
- #endif
- #else
- #define CAB_LSIFQ 32000
- #endif
- #endif
- void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);
- void RTC_EnterConfigMode(void);
- void RTC_ExitConfigMode(void);
- uint32_t RTC_GetCounter(void);
- void RTC_SetCounter(uint32_t CounterValue);
- void RTC_SetPrescaler(uint32_t PrescalerValue);
- void RTC_SetAlarm(uint32_t AlarmValue);
- uint32_t RTC_GetDivider(void);
- void RTC_WaitForLastTask(void);
- void RTC_WaitForSynchro(void);
- FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
- void RTC_ClearFlag(uint16_t RTC_FLAG);
- ITStatus RTC_GetITStatus(uint16_t RTC_IT);
- void RTC_ClearITPendingBit(uint16_t RTC_IT);
- #if defined(CH32V20x_D8) || defined(CH32V20x_D8W)
- void Calibration_LSI(Cali_LevelTypeDef cali_Lv);
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|