1037 lines
33 KiB
C
1037 lines
33 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_rtc.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief RTC STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩRTC<EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>塣
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#ifndef CIU32L051_STD_RTC_H
|
|||
|
#define CIU32L051_STD_RTC_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup RTC RTC
|
|||
|
* @brief ʵʱʱ<EFBFBD>ӵ<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
/*------------------------------------------includes--------------------------------------------*/
|
|||
|
#include "ciu32l051_std_common.h"
|
|||
|
|
|||
|
|
|||
|
/*-----------------------------------------type define------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup RTC_Types RTC Types
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t hours; /**< RTC <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1>BCD<43><44>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>24Сʱ<D0A1>ƣ<EFBFBD>ȡֵ0~23 */
|
|||
|
uint8_t minutes; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<43><44>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȡֵ0~59 */
|
|||
|
uint8_t seconds; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD>루BCD<43><44>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȡֵ0~59 */
|
|||
|
} std_rtc_time_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t weekday; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@arg RTC_WEEKDAY_MONDAY ... */
|
|||
|
uint8_t month; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD>·ݣ<C2B7>BCD<43><44>ʽ<EFBFBD><CABD>
|
|||
|
@arg RTC_MONTH_JANUARY ... */
|
|||
|
uint8_t day; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<43><44>ʽ<EFBFBD><CABD> */
|
|||
|
uint8_t year; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>BCD<43><44>ʽ<EFBFBD><CABD> */
|
|||
|
} std_rtc_date_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
std_rtc_time_t time; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD>趨ʱ<E8B6A8><CAB1> */
|
|||
|
uint32_t time_mask; /**< RTC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@arg RTC_ALARM_MASK_NONE ...*/
|
|||
|
} std_rtc_alarm_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*--------------------------------------------define--------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup RTC_Constants RTC Constants
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/* RTC<54><43>ʱ<EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
#define RTC_INITMODE_TIMEOUT (1000U)
|
|||
|
|
|||
|
/* RTCģʽ */
|
|||
|
#define RTC_MODE_RUNNING (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define RTC_MODE_INIT RTC_CSR_MODSTA /**< <20><>ʼ<EFBFBD><CABC>ģʽ */
|
|||
|
|
|||
|
/* RTC_OUT<55><54><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
|
|||
|
#define RTC_OUTPUT_APRE_256HZ RTC_CR_OUT_SEL_APRE /**< <20><><EFBFBD><EFBFBD><EFBFBD>첽Ԥ<ECB2BD><D4A4>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>256Hz */
|
|||
|
#define RTC_OUTPUT_SPRE_1HZ RTC_CR_OUT_SEL_SPRE /**< <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>Ԥ<EFBFBD><D4A4>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>1Hz */
|
|||
|
#define RTC_OUTPUT_ALARM RTC_CR_OUT_SEL_ALARMF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>״̬ */
|
|||
|
#define RTC_OUTPUT_MINUTE RTC_CR_OUT_SEL_MIN /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>λ<EFBFBD>ź<EFBFBD> */
|
|||
|
#define RTC_OUTPUT_HOUR RTC_CR_OUT_SEL_HOUR /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1>λ<EFBFBD>ź<EFBFBD> */
|
|||
|
#define RTC_OUTPUT_DAY RTC_CR_OUT_SEL_DAY /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ź<EFBFBD> */
|
|||
|
#define RTC_OUTPUT_CALIB_CYCLE RTC_CR_OUT_SEL_CAL /**< <20><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
|
|||
|
|
|||
|
/* RTC_OUT<55>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_OUT_POLARITY_NORMAL (0x00000000U) /**< <20>б<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ */
|
|||
|
#define RTC_OUT_POLARITY_REVERSE RTC_CR_POL /**< <20>б<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ */
|
|||
|
|
|||
|
/* RTC_OUT<55>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD> */
|
|||
|
#define RTC_OUT_DISABLE (0x00000000U) /**< RTC_OUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ */
|
|||
|
#define RTC_OUT_ENABLE RTC_CR_OUTEN /**< RTC_OUT<55><54><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
/* RTC<54><43><EFBFBD><EFBFBD><EFBFBD>·ݣ<C2B7>BCD<43><44>ʽ<EFBFBD><CABD> */
|
|||
|
#define RTC_MONTH_JANUARY ((uint8_t)0x01U) /**< 1<><31> */
|
|||
|
#define RTC_MONTH_FEBRUARY ((uint8_t)0x02U) /**< 2<><32> */
|
|||
|
#define RTC_MONTH_MARCH ((uint8_t)0x03U) /**< 3<><33> */
|
|||
|
#define RTC_MONTH_APRIL ((uint8_t)0x04U) /**< 4<><34> */
|
|||
|
#define RTC_MONTH_MAY ((uint8_t)0x05U) /**< 5<><35> */
|
|||
|
#define RTC_MONTH_JUNE ((uint8_t)0x06U) /**< 6<><36> */
|
|||
|
#define RTC_MONTH_JULY ((uint8_t)0x07U) /**< 7<><37> */
|
|||
|
#define RTC_MONTH_AUGUST ((uint8_t)0x08U) /**< 8<><38> */
|
|||
|
#define RTC_MONTH_SEPTEMBER ((uint8_t)0x09U) /**< 9<><39> */
|
|||
|
#define RTC_MONTH_OCTOBER ((uint8_t)0x10U) /**< 10<31><30> */
|
|||
|
#define RTC_MONTH_NOVEMBER ((uint8_t)0x11U) /**< 11<31><31> */
|
|||
|
#define RTC_MONTH_DECEMBER ((uint8_t)0x12U) /**< 12<31><32> */
|
|||
|
|
|||
|
/* RTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_MONDAY ((uint8_t)0x01U) /**< <20><><EFBFBD><EFBFBD>һ */
|
|||
|
#define RTC_WEEKDAY_TUESDAY ((uint8_t)0x02U) /**< <20><><EFBFBD>ڶ<EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_WEDNESDAY ((uint8_t)0x03U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_THURSDAY ((uint8_t)0x04U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_FRIDAY ((uint8_t)0x05U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_SATURDAY ((uint8_t)0x06U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_WEEKDAY_SUNDAY ((uint8_t)0x07U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>/ʱ<><CAB1>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_OFFSET_YEAR ((uint32_t)16U)
|
|||
|
#define RTC_OFFSET_MONTH ((uint32_t)8U)
|
|||
|
#define RTC_OFFSET_HOUR ((uint32_t)16U)
|
|||
|
#define RTC_OFFSET_MINUTE ((uint32_t)8U)
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>/ʱ<><CAB1> */
|
|||
|
#define RTC_DAY_MASK (RTC_DR_DT | RTC_DR_DU) /**< <20><><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_MONTH_MASK (RTC_DR_MT | RTC_DR_MU) /**< <20>·<EFBFBD> */
|
|||
|
#define RTC_YEAR_MASK (RTC_DR_YT | RTC_DR_YU) /**< <20><><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_HOUR_MASK (RTC_TR_HT | RTC_TR_HU) /**< Сʱ */
|
|||
|
#define RTC_MINUTE_MASK (RTC_TR_MNT | RTC_TR_MNU) /**< <20><><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_SECOND_MASK (RTC_TR_ST | RTC_TR_SU) /**< <20><><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
#define RTC_ALARM_HOUR_MASK (RTC_ALARMR_HT | RTC_ALARMR_HU) /**< <20><><EFBFBD><EFBFBD>Сʱ */
|
|||
|
#define RTC_ALARM_MINUTE_MASK (RTC_ALARMR_MNT | RTC_ALARMR_MNU) /**< <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD> */
|
|||
|
#define RTC_ALARM_SECOND_MASK (RTC_ALARMR_ST | RTC_ALARMR_SU) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* RTC<54><43><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_NONE (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_HOURS RTC_ALARMR_MSK3 /**< <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_MINUTES RTC_ALARMR_MSK2 /**< <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_SECONDS RTC_ALARMR_MSK1 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_ALL RTC_ALARMR_MSKALL /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_HOURMIN (RTC_ALARM_MASK_HOURS \
|
|||
|
| RTC_ALARM_MASK_MINUTES) /**< <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_HOURSEC (RTC_ALARM_MASK_HOURS \
|
|||
|
| RTC_ALARM_MASK_SECONDS) /**< <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
#define RTC_ALARM_MASK_MINSEC (RTC_ALARM_MASK_MINUTES \
|
|||
|
| RTC_ALARM_MASK_SECONDS) /**< <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> */
|
|||
|
|
|||
|
/* RTC<54><43><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_DAY RTC_WUT_DAYIE /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_HOUR RTC_WUT_HOURIE /**< Сʱ<D0A1><CAB1>λ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_MIN RTC_WUT_MINIE /**< <20><><EFBFBD>ӽ<EFBFBD>λ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_SEC RTC_WUT_SECIE /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_2HZ RTC_WUT_2HZIE /**< 2Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_4HZ RTC_WUT_4HZIE /**< 4Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_8HZ RTC_WUT_8HZIE /**< 8Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_16HZ RTC_WUT_16HZIE /**< 16Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_64HZ RTC_WUT_64HZIE /**< 64Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_256HZ RTC_WUT_256HZIE /**< 256Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define RTC_WUT_INTERRUPT_1024HZ RTC_WUT_1024HZIE /**< 1024Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
/* RTC<54>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_ALARM RTC_ISR_ALARMIF /**< <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_CALIBRATION RTC_ISR_CALIIF /**< У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_DAY RTC_ISR_DAYIF /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_HOUR RTC_ISR_HOURIF /**< Сʱ<D0A1><CAB1>λ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_MIN RTC_ISR_MINIF /**< <20><><EFBFBD>ӽ<EFBFBD>λ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_SEC RTC_ISR_SECIF /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_2HZ RTC_ISR_2HZIF /**< 2Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_4HZ RTC_ISR_4HZIF /**< 4Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_8HZ RTC_ISR_8HZIF /**< 8Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_16HZ RTC_ISR_16HZIF /**< 16Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_64HZ RTC_ISR_64HZIF /**< 64Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_256HZ RTC_ISR_256HZIF /**< 256Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define RTC_INTERRUPT_FLAG_1024HZ RTC_ISR_1024HZIF /**< 1024Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>жϱ<D0B6>־ */
|
|||
|
|
|||
|
/* RTC<54><43>־ */
|
|||
|
#define RTC_FLAG_ALARM RTC_SR_ALARMF /**< <20><><EFBFBD>ӱ<EFBFBD>־ */
|
|||
|
#define RTC_FLAG_CALIBRATION RTC_SR_CALF /**< У<D0A3><D7BC><EFBFBD>ڱ<EFBFBD>־ */
|
|||
|
#define RTC_FLAG_TIMESTAMP RTC_SR_TSF /**< ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define RTC_FLAG_DAY RTC_SR_DAYF /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_FLAG_HOUR RTC_SR_HOURF /**< Сʱ<D0A1><CAB1>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_FLAG_MIN RTC_SR_MINF /**< <20><><EFBFBD>ӽ<EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_FLAG_SEC RTC_SR_SECF /**< <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_FLAG_2HZ RTC_SR_2HZF /**< 2Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_4HZ RTC_SR_4HZF /**< 4Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_8HZ RTC_SR_8HZF /**< 8Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_16HZ RTC_SR_16HZF /**< 16Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_64HZ RTC_SR_64HZF /**< 64Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_256HZ RTC_SR_256HZF /**< 256Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define RTC_FLAG_1024HZ RTC_SR_1024HZF /**< 1024Hz<48><7A><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
|
|||
|
/* RTC<54><43>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ */
|
|||
|
#define RTC_CLEAR_ALARM RTC_CLR_CALARMF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD>־ */
|
|||
|
#define RTC_CLEAR_CALIBRATION RTC_CLR_CCALF /**< <20><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD>ڱ<EFBFBD>־ */
|
|||
|
#define RTC_CLEAR_TIMESTAMP RTC_CLR_CTSF /**< <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define RTC_CLEAR_DAY RTC_CLR_CDAYF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_HOUR RTC_CLR_CHOURF /**< <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_MIN RTC_CLR_CMINF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_SEC RTC_CLR_CSECF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_2HZ RTC_CLR_C2HZF /**< <20><><EFBFBD><EFBFBD>2Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_4HZ RTC_CLR_C4HZF /**< <20><><EFBFBD><EFBFBD>4Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_8HZ RTC_CLR_C8HZF /**< <20><><EFBFBD><EFBFBD>8Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_16HZ RTC_CLR_C16HZF /**< <20><><EFBFBD><EFBFBD>16Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_64HZ RTC_CLR_C64HZF /**< <20><><EFBFBD><EFBFBD>64Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_256HZ RTC_CLR_C256HZF /**< <20><><EFBFBD><EFBFBD>256Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
#define RTC_CLEAR_1024HZ RTC_CLR_C1024HZF /**< <20><><EFBFBD><EFBFBD>1024Hz<48><7A>λ<EFBFBD><CEBB>־ */
|
|||
|
|
|||
|
/* RTCƽ<43><C6BD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_SMOOTH_CALIB_PLUS_PULSES_RESET (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define RTC_SMOOTH_CALIB_PLUS_PULSES_SET RTC_CALR_CALP /**< ÿ<><C3BF>2^11<31><31>RTCLK<4C><4B><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup RTC_External_Functions RTC External Functions
|
|||
|
* @brief RTC<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/**
|
|||
|
*@brief BINתBCD
|
|||
|
*@param value BIN<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*@retval uint8_t BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint8_t std_rtc_convert_bin2bcd(uint8_t value)
|
|||
|
{
|
|||
|
return (uint8_t)((((value) / 10U) << 4U) | ((value) % 10U));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
*@brief BCDתBIN
|
|||
|
*@param value BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*@retval uint8_t BIN<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint8_t std_rtc_convert_bcd2bin(uint8_t value)
|
|||
|
{
|
|||
|
return (uint8_t)(((((value) & 0xF0U) >> 0x4U) * 10U ) + ((value) & 0x0FU));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>RTC<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_write_protection_enable(void)
|
|||
|
{
|
|||
|
RTC->WPR = 0x00U;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹRTC<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_write_protection_disable(void)
|
|||
|
{
|
|||
|
RTC->WPR = 0xCAU;
|
|||
|
RTC->WPR = 0x53U;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>RTC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_init_mode_enable(void)
|
|||
|
{
|
|||
|
RTC->CSR |= RTC_CSR_MODSEL;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹRTC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_init_mode_disable(void)
|
|||
|
{
|
|||
|
RTC->CSR &= (~RTC_CSR_MODSEL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTCģʽ״̬
|
|||
|
* @retval uint32_t RTCģʽ״̬
|
|||
|
* @arg RTC_MODE_RUNNING
|
|||
|
* @arg RTC_MODE_INIT
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_get_mode(void)
|
|||
|
{
|
|||
|
return (RTC->CSR & RTC_CSR_MODSTA);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param weekday <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_WEEKDAY_MONDAY
|
|||
|
* @arg RTC_WEEKDAY_TUESDAY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WEEKDAY_SUNDAY
|
|||
|
* @param day <EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>С0x01<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x31<EFBFBD><EFBFBD>
|
|||
|
* @param month <EFBFBD>·<EFBFBD>
|
|||
|
* @arg RTC_MONTH_JANUARY
|
|||
|
* @arg RTC_MONTH_FEBRUARY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_MONTH_DECEMBER
|
|||
|
* @param year <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x99<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_date_config(uint32_t weekday, uint32_t day, uint32_t month, uint32_t year)
|
|||
|
{
|
|||
|
uint32_t temp;
|
|||
|
|
|||
|
temp = (weekday << RTC_DR_WDU_POS) \
|
|||
|
| (((year & 0xF0U) << (RTC_DR_YT_POS - 4U)) | ((year & 0x0FU) << RTC_DR_YU_POS)) \
|
|||
|
| (((month & 0xF0U) << (RTC_DR_MT_POS - 4U)) | ((month & 0x0FU) << RTC_DR_MU_POS)) \
|
|||
|
| (((day & 0xF0U) << (RTC_DR_DT_POS - 4U)) | ((day & 0x0FU) << RTC_DR_DU_POS));
|
|||
|
|
|||
|
RTC->DR = temp;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>+<EFBFBD>գ<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_date_get_date(void)
|
|||
|
{
|
|||
|
uint32_t temp;
|
|||
|
temp = RTC->DR;
|
|||
|
return (uint32_t)((temp & (~RTC_DR_WDU)) | ((temp & RTC_DR_WDU) << 11));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param day <EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>С0x01<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x31<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_date_set_day(uint32_t day)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->DR, RTC_DAY_MASK,
|
|||
|
(((day & 0xF0U) << (RTC_DR_DT_POS - 4U)) | ((day & 0x0FU) << RTC_DR_DU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x01<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x31<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_date_get_day(void)
|
|||
|
{
|
|||
|
return ((RTC->DR & RTC_DAY_MASK) >> RTC_DR_DU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·ݣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param month <EFBFBD>·<EFBFBD>
|
|||
|
* @arg RTC_MONTH_JANUARY
|
|||
|
* @arg RTC_MONTH_FEBRUARY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_MONTH_DECEMBER
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_date_set_month(uint32_t month)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->DR, RTC_MONTH_MASK,
|
|||
|
(((month & 0xF0U) << (RTC_DR_MT_POS - 4U)) | ((month & 0x0FU) << RTC_DR_MU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·ݣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD>·<EFBFBD>
|
|||
|
* @arg RTC_MONTH_JANUARY
|
|||
|
* @arg RTC_MONTH_FEBRUARY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_MONTH_DECEMBER
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_date_get_month(void)
|
|||
|
{
|
|||
|
return ((RTC->DR & RTC_MONTH_MASK) >> RTC_DR_MU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param weekday <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_WEEKDAY_MONDAY
|
|||
|
* @arg RTC_WEEKDAY_TUESDAY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WEEKDAY_SUNDAY
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_date_set_weekday(uint32_t weekday)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->DR, RTC_DR_WDU, (weekday << RTC_DR_WDU_POS));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_WEEKDAY_MONDAY
|
|||
|
* @arg RTC_WEEKDAY_TUESDAY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WEEKDAY_SUNDAY
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_date_get_weekday(void)
|
|||
|
{
|
|||
|
return ((RTC->DR & RTC_DR_WDU) >> RTC_DR_WDU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param year <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x99<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_date_set_year(uint32_t year)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->DR, RTC_YEAR_MASK,
|
|||
|
(((year & 0xF0U) << (RTC_DR_YT_POS - 4U)) | ((year & 0x0FU) << RTC_DR_YU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x99<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_date_get_year(void)
|
|||
|
{
|
|||
|
return ((RTC->DR & RTC_YEAR_MASK) >> RTC_DR_YU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param hours Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
* @param minutes <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @param seconds <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_time_config(uint32_t hours, uint32_t minutes, uint32_t seconds)
|
|||
|
{
|
|||
|
uint32_t temp;
|
|||
|
|
|||
|
temp = (((hours & 0xF0U) << (RTC_TR_HT_POS - 4U)) | ((hours & 0x0FU) << RTC_TR_HU_POS)) \
|
|||
|
| (((minutes & 0xF0U) << (RTC_TR_MNT_POS - 4U)) | ((minutes & 0x0FU) << RTC_TR_MNU_POS)) \
|
|||
|
| (((seconds & 0xF0U) << (RTC_TR_ST_POS - 4U)) | ((seconds & 0x0FU) << RTC_TR_SU_POS));
|
|||
|
|
|||
|
RTC->TR = temp;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t ʱ<EFBFBD>䣨ʱ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_time_get_time(void)
|
|||
|
{
|
|||
|
return (RTC->TR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param hours Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_time_set_hour(uint32_t hours)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->TR, RTC_HOUR_MASK,
|
|||
|
(((hours & 0xF0U) << (RTC_TR_HT_POS - 4U)) | ((hours & 0x0FU) << RTC_TR_HU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param minutes <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_time_set_minute(uint32_t minutes)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->TR, RTC_MINUTE_MASK,
|
|||
|
(((minutes & 0xF0U) << (RTC_TR_MNT_POS - 4U)) | ((minutes & 0x0FU) << RTC_TR_MNU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param seconds <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_time_set_second(uint32_t seconds)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->TR, RTC_SECOND_MASK,
|
|||
|
(((seconds & 0xF0U) << (RTC_TR_ST_POS - 4U)) | ((seconds & 0x0FU) << RTC_TR_SU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param subseconds <EFBFBD><EFBFBD><EFBFBD>루<EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0xff<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1/256 s<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_time_set_subsecond(uint32_t subseconds)
|
|||
|
{
|
|||
|
RTC->SSR = subseconds;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>루BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_time_get_subsecond(void)
|
|||
|
{
|
|||
|
return (RTC->SSR);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ѡ<EFBFBD><EFBFBD>RTCʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
* @param rtc_out Уʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
* @arg RTC_OUTPUT_APRE_256HZ
|
|||
|
* @arg RTC_OUTPUT_SPRE_1HZ
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_OUTPUT_CALIB_CYCLE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_out_config(uint32_t rtc_out)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->CR, RTC_CR_OUT_SEL, rtc_out);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTCʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
* @retval uint32_t Уʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
* @arg RTC_OUTPUT_APRE_256HZ
|
|||
|
* @arg RTC_OUTPUT_SPRE_1HZ
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_OUTPUT_CALIB_CYCLE
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_get_rtc_out(void)
|
|||
|
{
|
|||
|
return (RTC->CR & RTC_CR_OUT_SEL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTC OUT<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param polarity <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_OUT_POLARITY_NORMAL
|
|||
|
* @arg RTC_OUT_POLARITY_REVERSE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_set_output_polarity(uint32_t polarity)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->CR, RTC_CR_POL, polarity);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTC OUT<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_OUT_POLARITY_NORMAL
|
|||
|
* @arg RTC_OUT_POLARITY_REVERSE
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_get_output_polarity(void)
|
|||
|
{
|
|||
|
return (RTC->CR & RTC_CR_POL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>RTC OUT<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_output_enable(void)
|
|||
|
{
|
|||
|
RTC->CR |= RTC_CR_OUTEN;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>ر<EFBFBD>RTC OUT<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_output_disable(void)
|
|||
|
{
|
|||
|
RTC->CR &= (~RTC_CR_OUTEN);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>RTC<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>
|
|||
|
* @param wut_interrupt_sel
|
|||
|
* @arg RTC_WUT_INTERRUPT_DAY
|
|||
|
* @arg RTC_WUT_INTERRUPT_HOUR
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WUT_INTERRUPT_1024HZ
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_wut_interrupt_enable(uint32_t wut_interrupt_sel)
|
|||
|
{
|
|||
|
RTC->WUT |= wut_interrupt_sel;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹRTC<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>
|
|||
|
* @param wut_interrupt_sel
|
|||
|
* @arg RTC_WUT_INTERRUPT_DAY
|
|||
|
* @arg RTC_WUT_INTERRUPT_HOUR
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WUT_INTERRUPT_1024HZ
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_wut_interrupt_disable(uint32_t wut_interrupt_sel)
|
|||
|
{
|
|||
|
RTC->WUT &= (~wut_interrupt_sel);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTC<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @param wut_interrupt_sel
|
|||
|
* @arg RTC_WUT_INTERRUPT_DAY
|
|||
|
* @arg RTC_WUT_INTERRUPT_HOUR
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_WUT_INTERRUPT_1024HZ
|
|||
|
* @retval bool <EFBFBD><EFBFBD>־״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʱ<EFBFBD>жϹر<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_get_wut_interrupt_enable(uint32_t wut_interrupt_sel)
|
|||
|
{
|
|||
|
return ((RTC->WUT & wut_interrupt_sel) == wut_interrupt_sel);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_enable(void)
|
|||
|
{
|
|||
|
RTC->CR |= RTC_CR_ALARME;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_disable(void)
|
|||
|
{
|
|||
|
RTC->CR &= (~RTC_CR_ALARME);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param hours Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
* @param minutes <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @param seconds <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_config(uint32_t hours, uint32_t minutes, uint32_t seconds)
|
|||
|
{
|
|||
|
register uint32_t temp;
|
|||
|
|
|||
|
temp = (((hours & 0xF0U) << (RTC_ALARMR_HT_POS - 4U)) | ((hours & 0x0FU) << RTC_ALARMR_HU_POS))
|
|||
|
| (((minutes & 0xF0U) << (RTC_ALARMR_MNT_POS - 4U)) | ((minutes & 0x0FU) << RTC_ALARMR_MNU_POS))
|
|||
|
| (((seconds & 0xF0U) << (RTC_ALARMR_ST_POS - 4U)) | ((seconds & 0x0FU) << RTC_ALARMR_SU_POS));
|
|||
|
|
|||
|
MODIFY_REG(RTC->ALARMR, (RTC_ALARM_HOUR_MASK | RTC_ALARM_MINUTE_MASK | RTC_ALARM_SECOND_MASK), temp);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t ʱ<EFBFBD>䣨ʱ+<EFBFBD><EFBFBD>+<EFBFBD>룩
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_alarm_get_time(void)
|
|||
|
{
|
|||
|
return (uint32_t)(RTC->ALARMR & (RTC_ALARM_HOUR_MASK | RTC_ALARM_MINUTE_MASK | RTC_ALARM_SECOND_MASK));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param hours Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_set_hour(uint32_t hours)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->ALARMR, RTC_ALARM_HOUR_MASK,
|
|||
|
(((hours & 0xF0U) << (RTC_ALARMR_HT_POS - 4U)) | ((hours & 0x0FU) << RTC_ALARMR_HU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_alarm_get_hour(void)
|
|||
|
{
|
|||
|
return ((RTC->ALARMR & RTC_ALARM_HOUR_MASK) >> RTC_ALARMR_HU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param minutes <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_set_minute(uint32_t minutes)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->ALARMR, RTC_ALARM_MINUTE_MASK,
|
|||
|
(((minutes & 0xF0U) << (RTC_ALARMR_MNT_POS - 4U)) | ((minutes & 0x0FU) << RTC_ALARMR_MNU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_alarm_get_minute(void)
|
|||
|
{
|
|||
|
return ((RTC->ALARMR & RTC_ALARM_MINUTE_MASK) >> RTC_ALARMR_MNU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @param seconds <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_set_second(uint32_t seconds)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->ALARMR, RTC_ALARM_SECOND_MASK,
|
|||
|
(((seconds & 0xF0U) << (RTC_ALARMR_ST_POS - 4U)) | ((seconds & 0x0FU) << RTC_ALARMR_SU_POS)));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_alarm_get_second(void)
|
|||
|
{
|
|||
|
return ((RTC->ALARMR & RTC_ALARM_SECOND_MASK) >> RTC_ALARMR_SU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_interrupt_enable(void)
|
|||
|
{
|
|||
|
RTC->CR |= RTC_CR_ALARMIE;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_interrupt_disable(void)
|
|||
|
{
|
|||
|
RTC->CR &= (~RTC_CR_ALARMIE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @retval bool <EFBFBD><EFBFBD>־״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϹر<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_get_alarm_interrupt_enable()
|
|||
|
{
|
|||
|
return ((RTC->CR & RTC_CR_ALARMIE) == RTC_CR_ALARMIE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param alarm_mask ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_ALARM_MASK_NONE
|
|||
|
* @arg RTC_ALARM_MASK_HOURS
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_ALARM_MASK_MINSEC
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_alarm_set_mask(uint32_t alarm_mask)
|
|||
|
{
|
|||
|
MODIFY_REG(RTC->ALARMR, RTC_ALARMR_MSKALL, alarm_mask);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
* @arg RTC_ALARM_MASK_NONE
|
|||
|
* @arg RTC_ALARM_MASK_HOURS
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_ALARM_MASK_MINSEC
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_alarm_get_mask(void)
|
|||
|
{
|
|||
|
return (RTC->ALARMR & RTC_ALARM_MASK_ALL);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У״̬
|
|||
|
* @retval bool ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>룬<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>Ч
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_cal_get_status(void)
|
|||
|
{
|
|||
|
return ((RTC->CSR & RTC_CSR_CALSTA) == RTC_CSR_CALSTA);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param calib_plus <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_SMOOTH_CALIB_PLUS_PULSES_RESET
|
|||
|
* @arg RTC_SMOOTH_CALIB_PLUS_PULSES_SET
|
|||
|
* @param calib_minus <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_cal_config(uint32_t calib_plus, uint32_t calib_minus)
|
|||
|
{
|
|||
|
RTC->CALR = (uint32_t)(calib_plus | calib_minus);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg RTC_SMOOTH_CALIB_PLUS_PULSES_RESET
|
|||
|
* @arg RTC_SMOOTH_CALIB_PLUS_PULSES_SET
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_cal_get_plus(void)
|
|||
|
{
|
|||
|
return (RTC->CALR & RTC_CALR_CALP);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x1FF<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_cal_get_minus(void)
|
|||
|
{
|
|||
|
return (RTC->CALR & RTC_CALR_CALM);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_calib_interrupt_enable(void)
|
|||
|
{
|
|||
|
RTC->CR |= RTC_CR_CALIE;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_calib_interrupt_disable(void)
|
|||
|
{
|
|||
|
RTC->CR &= (~RTC_CR_CALIE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡRTCУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @retval bool <EFBFBD><EFBFBD>־״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾRTCУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾRTCУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϹر<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_get_calib_interrupt_enable()
|
|||
|
{
|
|||
|
return ((RTC->CR & RTC_CR_CALIE) == RTC_CR_CALIE);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_day(void)
|
|||
|
{
|
|||
|
return (RTC->TSDR & (RTC_TSDR_DT | RTC_TSDR_DU));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·ݣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD>·<EFBFBD>
|
|||
|
* @arg RTC_MONTH_JANUARY
|
|||
|
* @arg RTC_MONTH_FEBRUARY
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_MONTH_DECEMBER
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_month(void)
|
|||
|
{
|
|||
|
return ((RTC->TSDR & (RTC_TSDR_MT | RTC_TSDR_MU)) >> RTC_TSDR_MU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD>·<EFBFBD>+<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_date(void)
|
|||
|
{
|
|||
|
return (RTC->TSDR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x23<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_hour(void)
|
|||
|
{
|
|||
|
return ((RTC->TSTR & (RTC_TSTR_HT | RTC_TSTR_HU)) >> RTC_TSTR_HU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_minute(void)
|
|||
|
{
|
|||
|
return ((RTC->TSTR & (RTC_TSTR_MNT | RTC_TSTR_MNU)) >> RTC_TSTR_MNU_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>С0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x59<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_second(void)
|
|||
|
{
|
|||
|
return (RTC->TSTR & (RTC_TSTR_ST | RTC_TSTR_SU));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨BCD<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t ʱ<EFBFBD>䣨ʱ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_rtc_timestamp_get_time(void)
|
|||
|
{
|
|||
|
return (RTC->TSTR);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ״̬<EFBFBD><EFBFBD>־
|
|||
|
* @param flag <EFBFBD><EFBFBD>־
|
|||
|
* @arg RTC_FLAG_ALARM
|
|||
|
* @arg RTC_FLAG_CALIBRATION
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_FLAG_1024HZ
|
|||
|
* @retval bool <EFBFBD><EFBFBD>־״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>1
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>0
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_get_flag(uint32_t flag)
|
|||
|
{
|
|||
|
return ((RTC->SR & flag) == flag);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD>ж<EFBFBD>״̬<EFBFBD><EFBFBD>־
|
|||
|
* @param interrupt <EFBFBD><EFBFBD>־
|
|||
|
* @arg RTC_INTERRUPT_FLAG_ALARM
|
|||
|
* @arg RTC_INTERRUPT_FLAG_CALIBRATION
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_INTERRUPT_FLAG_1024HZ
|
|||
|
* @retval bool <EFBFBD>ж<EFBFBD>״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_rtc_get_interrupt_flag(uint32_t interrupt)
|
|||
|
{
|
|||
|
return ((RTC->ISR & interrupt) == interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>־
|
|||
|
* @param flag <EFBFBD><EFBFBD>־
|
|||
|
* @arg RTC_CLEAR_ALARM
|
|||
|
* @arg RTC_CLEAR_CALIBRATION
|
|||
|
* @arg ...
|
|||
|
* @arg RTC_CLEAR_1024HZ
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_rtc_clear_flag(uint32_t flag)
|
|||
|
{
|
|||
|
RTC->CLR = flag;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void std_rtc_deinit(void);
|
|||
|
|
|||
|
std_status_t std_rtc_date_init(std_rtc_date_t *rtc_date_init_param);
|
|||
|
void std_rtc_date_struct_init(std_rtc_date_t *rtc_date_init_struct);
|
|||
|
|
|||
|
std_status_t std_rtc_time_init(std_rtc_time_t *rtc_time_init_param);
|
|||
|
void std_rtc_time_struct_init(std_rtc_time_t *rtc_time_init_struct);
|
|||
|
|
|||
|
void std_rtc_alarm_init(std_rtc_alarm_t *rtc_alarm_init_param);
|
|||
|
void std_rtc_alarm_struct_init(std_rtc_alarm_t *rtc_alarm_init_struct);
|
|||
|
|
|||
|
std_status_t std_rtc_init_mode_enter(void);
|
|||
|
std_status_t std_rtc_init_mode_exit(void);
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_RTC_H */
|