1199 lines
37 KiB
C
1199 lines
37 KiB
C
/**
|
|
*******************************************************************************************************
|
|
* @file fm33lg0xx_fl_rtcb.h
|
|
* @author FMSH Application Team
|
|
* @brief Head file of RTCB FL Module
|
|
*******************************************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) [2021] [Fudan Microelectronics]
|
|
* THIS SOFTWARE is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
*
|
|
*******************************************************************************************************
|
|
*/
|
|
|
|
|
|
/* Define to prevent recursive inclusion---------------------------------------------------------------*/
|
|
#ifndef __FM33LG0XX_FL_RTCB_H
|
|
#define __FM33LG0XX_FL_RTCB_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/* Includes -------------------------------------------------------------------------------------------*/
|
|
#include "fm33lg0xx_fl_def.h"
|
|
/** @addtogroup FM33LG0XX_FL_Driver
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup RTCB RTCB
|
|
* @brief RTCB FL driver
|
|
* @{
|
|
*/
|
|
|
|
/* Exported types -------------------------------------------------------------------------------------*/
|
|
/** @defgroup RTCB_FL_ES_INIT RTCB Exported Init structures
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Configuration with temporary structure variable users will not be used directly
|
|
*/
|
|
typedef __IO struct
|
|
{
|
|
__IO uint32_t backup[5];
|
|
} FL_RTCB_Backup_ADDR;
|
|
/**
|
|
* @brief FL RTCB Init Sturcture definition
|
|
*/
|
|
typedef struct
|
|
{
|
|
/** 年 */
|
|
uint32_t year;
|
|
/** 月 */
|
|
uint32_t month;
|
|
/** 日 */
|
|
uint32_t day;
|
|
/** 周 */
|
|
uint32_t week;
|
|
/** 时 */
|
|
uint32_t hour;
|
|
/** 分 */
|
|
uint32_t minute;
|
|
/** 秒 */
|
|
uint32_t second;
|
|
|
|
} FL_RTCB_InitTypeDef;
|
|
/**
|
|
* @}
|
|
*/
|
|
/* Exported constants ---------------------------------------------------------------------------------*/
|
|
/** @defgroup RTCB_FL_Exported_Constants RTCB Exported Constants
|
|
* @{
|
|
*/
|
|
|
|
#define RTCB_IER_STP_IE_Pos (13U)
|
|
#define RTCB_IER_STP_IE_Msk (0x1U << RTCB_IER_STP_IE_Pos)
|
|
#define RTCB_IER_STP_IE RTCB_IER_STP_IE_Msk
|
|
|
|
#define RTCB_IER_ADJ_IE_Pos (12U)
|
|
#define RTCB_IER_ADJ_IE_Msk (0x1U << RTCB_IER_ADJ_IE_Pos)
|
|
#define RTCB_IER_ADJ_IE RTCB_IER_ADJ_IE_Msk
|
|
|
|
#define RTCB_IER_SEC_IE_Pos (3U)
|
|
#define RTCB_IER_SEC_IE_Msk (0x1U << RTCB_IER_SEC_IE_Pos)
|
|
#define RTCB_IER_SEC_IE RTCB_IER_SEC_IE_Msk
|
|
|
|
#define RTCB_IER_MIN_IE_Pos (2U)
|
|
#define RTCB_IER_MIN_IE_Msk (0x1U << RTCB_IER_MIN_IE_Pos)
|
|
#define RTCB_IER_MIN_IE RTCB_IER_MIN_IE_Msk
|
|
|
|
#define RTCB_IER_HOUR_IE_Pos (1U)
|
|
#define RTCB_IER_HOUR_IE_Msk (0x1U << RTCB_IER_HOUR_IE_Pos)
|
|
#define RTCB_IER_HOUR_IE RTCB_IER_HOUR_IE_Msk
|
|
|
|
#define RTCB_IER_DAY_IE_Pos (0U)
|
|
#define RTCB_IER_DAY_IE_Msk (0x1U << RTCB_IER_DAY_IE_Pos)
|
|
#define RTCB_IER_DAY_IE RTCB_IER_DAY_IE_Msk
|
|
|
|
#define RTCB_ISR_STP_IF_Pos (13U)
|
|
#define RTCB_ISR_STP_IF_Msk (0x1U << RTCB_ISR_STP_IF_Pos)
|
|
#define RTCB_ISR_STP_IF RTCB_ISR_STP_IF_Msk
|
|
|
|
#define RTCB_ISR_ADJ_IF_Pos (12U)
|
|
#define RTCB_ISR_ADJ_IF_Msk (0x1U << RTCB_ISR_ADJ_IF_Pos)
|
|
#define RTCB_ISR_ADJ_IF RTCB_ISR_ADJ_IF_Msk
|
|
|
|
#define RTCB_ISR_SEC_IF_Pos (3U)
|
|
#define RTCB_ISR_SEC_IF_Msk (0x1U << RTCB_ISR_SEC_IF_Pos)
|
|
#define RTCB_ISR_SEC_IF RTCB_ISR_SEC_IF_Msk
|
|
|
|
#define RTCB_ISR_MIN_IF_Pos (2U)
|
|
#define RTCB_ISR_MIN_IF_Msk (0x1U << RTCB_ISR_MIN_IF_Pos)
|
|
#define RTCB_ISR_MIN_IF RTCB_ISR_MIN_IF_Msk
|
|
|
|
#define RTCB_ISR_HOUR_IF_Pos (1U)
|
|
#define RTCB_ISR_HOUR_IF_Msk (0x1U << RTCB_ISR_HOUR_IF_Pos)
|
|
#define RTCB_ISR_HOUR_IF RTCB_ISR_HOUR_IF_Msk
|
|
|
|
#define RTCB_ISR_DAY_IF_Pos (0U)
|
|
#define RTCB_ISR_DAY_IF_Msk (0x1U << RTCB_ISR_DAY_IF_Pos)
|
|
#define RTCB_ISR_DAY_IF RTCB_ISR_DAY_IF_Msk
|
|
|
|
#define RTCB_TMSEL_TMSEL_Pos (0U)
|
|
#define RTCB_TMSEL_TMSEL_Msk (0xfU << RTCB_TMSEL_TMSEL_Pos)
|
|
#define RTCB_TMSEL_TMSEL RTCB_TMSEL_TMSEL_Msk
|
|
|
|
#define RTCB_ADJR_ADSIGN_Pos (9U)
|
|
#define RTCB_ADJR_ADSIGN_Msk (0x1U << RTCB_ADJR_ADSIGN_Pos)
|
|
#define RTCB_ADJR_ADSIGN RTCB_ADJR_ADSIGN_Msk
|
|
|
|
#define RTCB_CR_EN_Pos (0U)
|
|
#define RTCB_CR_EN_Msk (0x1U << RTCB_CR_EN_Pos)
|
|
#define RTCB_CR_EN RTCB_CR_EN_Msk
|
|
|
|
#define RTCB_STPCR_TAMPSEL_Pos (8U)
|
|
#define RTCB_STPCR_TAMPSEL_Msk (0x3U << RTCB_STPCR_TAMPSEL_Pos)
|
|
#define RTCB_STPCR_TAMPSEL RTCB_STPCR_TAMPSEL_Msk
|
|
|
|
#define RTCB_STPCR_DF_Pos (7U)
|
|
#define RTCB_STPCR_DF_Msk (0x1U << RTCB_STPCR_DF_Pos)
|
|
#define RTCB_STPCR_DF RTCB_STPCR_DF_Msk
|
|
|
|
#define RTCB_STPCR_TSEDGE_Pos (2U)
|
|
#define RTCB_STPCR_TSEDGE_Msk (0x1U << RTCB_STPCR_TSEDGE_Pos)
|
|
#define RTCB_STPCR_TSEDGE RTCB_STPCR_TSEDGE_Msk
|
|
|
|
#define RTCB_STPCR_TAMPEN_Pos (1U)
|
|
#define RTCB_STPCR_TAMPEN_Msk (0x1U << RTCB_STPCR_TAMPEN_Pos)
|
|
#define RTCB_STPCR_TAMPEN RTCB_STPCR_TAMPEN_Msk
|
|
|
|
#define RTCB_STPCR_TSEN_Pos (0U)
|
|
#define RTCB_STPCR_TSEN_Msk (0x1U << RTCB_STPCR_TSEN_Pos)
|
|
#define RTCB_STPCR_TSEN RTCB_STPCR_TSEN_Msk
|
|
|
|
|
|
|
|
#define FL_RTCB_BACKUP_0 (0x0U)
|
|
#define FL_RTCB_BACKUP_1 (0x1U)
|
|
#define FL_RTCB_BACKUP_2 (0x2U)
|
|
#define FL_RTCB_BACKUP_3 (0x3U)
|
|
#define FL_RTCB_BACKUP_4 (0x4U)
|
|
|
|
|
|
|
|
#define FL_RTCB_TIME_MARK_CLOSE (0x0U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_XTLF (0x1U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_SECOND (0x2U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_MINUTE (0x3U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_HOUR (0x4U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_DAY (0x5U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_32_SEC (0x7U << RTCB_TMSEL_TMSEL_Pos)
|
|
#define FL_RTCB_TIME_MARK_SEC (0x8U << RTCB_TMSEL_TMSEL_Pos)
|
|
|
|
|
|
#define FL_RTCB_ADJUST_DIR_INCREASE (0x0U << RTCB_ADJR_ADSIGN_Pos)
|
|
#define FL_RTCB_ADJUST_DIR_DECREASE (0x1U << RTCB_ADJR_ADSIGN_Pos)
|
|
|
|
|
|
#define FL_RTCB_TIME_CLEAR_NONE (0x0U << RTCB_STPCR_TAMPSEL_Pos)
|
|
#define FL_RTCB_TIME_CLEAR_TAMPER_PIN (0x1U << RTCB_STPCR_TAMPSEL_Pos)
|
|
#define FL_RTCB_TIME_CLEAR_XTLF (0x2U << RTCB_STPCR_TAMPSEL_Pos)
|
|
#define FL_RTCB_TIME_CLEAR_BOTH (0x3U << RTCB_STPCR_TAMPSEL_Pos)
|
|
|
|
|
|
#define FL_RTCB_TIMESTAMP_EDGE_RISING (0x0U << RTCB_STPCR_TSEDGE_Pos)
|
|
#define FL_RTCB_TIMESTAMP_EDGE_FALLING (0x1U << RTCB_STPCR_TSEDGE_Pos)
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
/* Exported functions ---------------------------------------------------------------------------------*/
|
|
/** @defgroup RTCB_FL_Exported_Functions RTCB Exported Functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Enable RTCB Config Time
|
|
* @rmtoll WER FL_RTCB_WriteEnable
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteEnable(RTCB_Type *RTCBx)
|
|
{
|
|
RTCBx->WER = 0xACACACAC;
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Config Time
|
|
* @rmtoll WER FL_RTCB_WriteDisable
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteDisable(RTCB_Type *RTCBx)
|
|
{
|
|
RTCBx->WER = 0x5A5A5A5A;
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB STP Interrupt
|
|
* @rmtoll IER STP_IE FL_RTCB_EnableIT_Stamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Stamp(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_STP_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB STP Interrupt Enable Status
|
|
* @rmtoll IER STP_IE FL_RTCB_IsEnabledIT_Stamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Stamp(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_STP_IE_Msk) == RTCB_IER_STP_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB STP Interrupt
|
|
* @rmtoll IER STP_IE FL_RTCB_DisableIT_Stamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Stamp(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_STP_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB Time Adjust Interrupt
|
|
* @rmtoll IER ADJ_IE FL_RTCB_EnableIT_Adjust
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Adjust(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_ADJ_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Time Adjust Interrupt Enable Status
|
|
* @rmtoll IER ADJ_IE FL_RTCB_IsEnabledIT_Adjust
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Adjust(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_ADJ_IE_Msk) == RTCB_IER_ADJ_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Time Adjust Interrupt
|
|
* @rmtoll IER ADJ_IE FL_RTCB_DisableIT_Adjust
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Adjust(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_ADJ_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB Second Interrupt
|
|
* @rmtoll IER SEC_IE FL_RTCB_EnableIT_Second
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Second(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_SEC_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Second Interrupt Enable Status
|
|
* @rmtoll IER SEC_IE FL_RTCB_IsEnabledIT_Second
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Second(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_SEC_IE_Msk) == RTCB_IER_SEC_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Second Interrupt
|
|
* @rmtoll IER SEC_IE FL_RTCB_DisableIT_Second
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Second(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_SEC_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB Minute Interrupt
|
|
* @rmtoll IER MIN_IE FL_RTCB_EnableIT_Minute
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Minute(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_MIN_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Minute Interrupt Enable Status
|
|
* @rmtoll IER MIN_IE FL_RTCB_IsEnabledIT_Minute
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Minute(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_MIN_IE_Msk) == RTCB_IER_MIN_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Minute Interrupt
|
|
* @rmtoll IER MIN_IE FL_RTCB_DisableIT_Minute
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Minute(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_MIN_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB Hour Interrupt
|
|
* @rmtoll IER HOUR_IE FL_RTCB_EnableIT_Hour
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Hour(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_HOUR_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Hour Interrupt Enable Status
|
|
* @rmtoll IER HOUR_IE FL_RTCB_IsEnabledIT_Hour
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Hour(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_HOUR_IE_Msk) == RTCB_IER_HOUR_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Hour Interrupt
|
|
* @rmtoll IER HOUR_IE FL_RTCB_DisableIT_Hour
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Hour(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_HOUR_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable RTCB Day Interrupt
|
|
* @rmtoll IER DAY_IE FL_RTCB_EnableIT_Day
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableIT_Day(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->IER, RTCB_IER_DAY_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Day Interrupt Enable Status
|
|
* @rmtoll IER DAY_IE FL_RTCB_IsEnabledIT_Day
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledIT_Day(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->IER, RTCB_IER_DAY_IE_Msk) == RTCB_IER_DAY_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable RTCB Day Interrupt
|
|
* @rmtoll IER DAY_IE FL_RTCB_DisableIT_Day
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableIT_Day(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->IER, RTCB_IER_DAY_IE_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB STP Interrupt Flag
|
|
* @rmtoll ISR STP_IF FL_RTCB_ClearFlag_Stamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Stamp(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_STP_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB STP Interrupt Flag
|
|
* @rmtoll ISR STP_IF FL_RTCB_IsActiveFlag_Stamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Stamp(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_STP_IF_Msk) == (RTCB_ISR_STP_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB Time Adjust Interrupt Flag
|
|
* @rmtoll ISR ADJ_IF FL_RTCB_ClearFlag_Adjust
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Adjust(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_ADJ_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Time Adjust Interrupt Flag
|
|
* @rmtoll ISR ADJ_IF FL_RTCB_IsActiveFlag_Adjust
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Adjust(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_ADJ_IF_Msk) == (RTCB_ISR_ADJ_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB Second Interrupt Flag
|
|
* @rmtoll ISR SEC_IF FL_RTCB_ClearFlag_Second
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Second(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_SEC_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Second Interrupt Flag
|
|
* @rmtoll ISR SEC_IF FL_RTCB_IsActiveFlag_Second
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Second(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_SEC_IF_Msk) == (RTCB_ISR_SEC_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB Minute Interrupt Flag
|
|
* @rmtoll ISR MIN_IF FL_RTCB_ClearFlag_Minute
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Minute(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_MIN_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Minute Interrupt Flag
|
|
* @rmtoll ISR MIN_IF FL_RTCB_IsActiveFlag_Minute
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Minute(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_MIN_IF_Msk) == (RTCB_ISR_MIN_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB Hour Interrupt Flag
|
|
* @rmtoll ISR HOUR_IF FL_RTCB_ClearFlag_Hour
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Hour(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_HOUR_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Hour Interrupt Flag
|
|
* @rmtoll ISR HOUR_IF FL_RTCB_IsActiveFlag_Hour
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Hour(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_HOUR_IF_Msk) == (RTCB_ISR_HOUR_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Clear RTCB Day Interrupt Flag
|
|
* @rmtoll ISR DAY_IF FL_RTCB_ClearFlag_Day
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_ClearFlag_Day(RTCB_Type *RTCBx)
|
|
{
|
|
WRITE_REG(RTCBx->ISR, RTCB_ISR_DAY_IF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Day Interrupt Flag
|
|
* @rmtoll ISR DAY_IF FL_RTCB_IsActiveFlag_Day
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsActiveFlag_Day(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ISR, RTCB_ISR_DAY_IF_Msk) == (RTCB_ISR_DAY_IF_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Second Value
|
|
* @rmtoll BCDSEC FL_RTCB_ReadSecond
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadSecond(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDSEC, (0x7fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Second Value
|
|
* @rmtoll BCDSEC FL_RTCB_WriteSecond
|
|
* @param RTCBx RTCB instance
|
|
* @param second
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteSecond(RTCB_Type *RTCBx, uint32_t second)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDSEC, (0x7fU << 0U), (second << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Minute Value
|
|
* @rmtoll BCDMIN FL_RTCB_ReadMinute
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadMinute(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDMIN, (0x7fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Minute Value
|
|
* @rmtoll BCDMIN FL_RTCB_WriteMinute
|
|
* @param RTCBx RTCB instance
|
|
* @param minute
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteMinute(RTCB_Type *RTCBx, uint32_t minute)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDMIN, (0x7fU << 0U), (minute << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Hour Value
|
|
* @rmtoll BCDHOUR FL_RTCB_ReadHour
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadHour(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDHOUR, (0x3fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Hour Value
|
|
* @rmtoll BCDHOUR FL_RTCB_WriteHour
|
|
* @param RTCBx RTCB instance
|
|
* @param hour
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteHour(RTCB_Type *RTCBx, uint32_t hour)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDHOUR, (0x3fU << 0U), (hour << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Day Value
|
|
* @rmtoll BCDDAY FL_RTCB_ReadDay
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadDay(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDDAY, (0x3fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Day Value
|
|
* @rmtoll BCDDAY FL_RTCB_WriteDay
|
|
* @param RTCBx RTCB instance
|
|
* @param day
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteDay(RTCB_Type *RTCBx, uint32_t day)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDDAY, (0x3fU << 0U), (day << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Week Value
|
|
* @rmtoll BCDWEEK FL_RTCB_ReadWeek
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadWeek(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDWEEK, (0x7U << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Week Value
|
|
* @rmtoll BCDWEEK FL_RTCB_WriteWeek
|
|
* @param RTCBx RTCB instance
|
|
* @param week
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteWeek(RTCB_Type *RTCBx, uint32_t week)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDWEEK, (0x7U << 0U), (week << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Month Value
|
|
* @rmtoll BCDMONTH FL_RTCB_ReadMonth
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadMonth(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDMONTH, (0x1fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Month Value
|
|
* @rmtoll BCDMONTH FL_RTCB_WriteMonth
|
|
* @param RTCBx RTCB instance
|
|
* @param month
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteMonth(RTCB_Type *RTCBx, uint32_t month)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDMONTH, (0x1fU << 0U), (month << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Year Value
|
|
* @rmtoll BCDYEAR FL_RTCB_ReadYear
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadYear(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->BCDYEAR, (0xffU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Year Value
|
|
* @rmtoll BCDYEAR FL_RTCB_WriteYear
|
|
* @param RTCBx RTCB instance
|
|
* @param year
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteYear(RTCB_Type *RTCBx, uint32_t year)
|
|
{
|
|
MODIFY_REG(RTCBx->BCDYEAR, (0xffU << 0U), (year << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Output Time Mark Signal
|
|
* @rmtoll TMSEL TMSEL FL_RTCB_SetTimeMarkOutput
|
|
* @param RTCBx RTCB instance
|
|
* @param markSelect This parameter can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIME_MARK_CLOSE
|
|
* @arg @ref FL_RTCB_TIME_MARK_XTLF
|
|
* @arg @ref FL_RTCB_TIME_MARK_SECOND
|
|
* @arg @ref FL_RTCB_TIME_MARK_MINUTE
|
|
* @arg @ref FL_RTCB_TIME_MARK_HOUR
|
|
* @arg @ref FL_RTCB_TIME_MARK_DAY
|
|
* @arg @ref FL_RTCB_TIME_MARK_32_SEC
|
|
* @arg @ref FL_RTCB_TIME_MARK_SEC
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_SetTimeMarkOutput(RTCB_Type *RTCBx, uint32_t markSelect)
|
|
{
|
|
MODIFY_REG(RTCBx->TMSEL, RTCB_TMSEL_TMSEL_Msk, markSelect);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Output Time Mark Signal Setting
|
|
* @rmtoll TMSEL TMSEL FL_RTCB_GetTimeMarkOutput
|
|
* @param RTCBx RTCB instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIME_MARK_CLOSE
|
|
* @arg @ref FL_RTCB_TIME_MARK_XTLF
|
|
* @arg @ref FL_RTCB_TIME_MARK_SECOND
|
|
* @arg @ref FL_RTCB_TIME_MARK_MINUTE
|
|
* @arg @ref FL_RTCB_TIME_MARK_HOUR
|
|
* @arg @ref FL_RTCB_TIME_MARK_DAY
|
|
* @arg @ref FL_RTCB_TIME_MARK_32_SEC
|
|
* @arg @ref FL_RTCB_TIME_MARK_SEC
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_GetTimeMarkOutput(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->TMSEL, RTCB_TMSEL_TMSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Adjust Value
|
|
* @rmtoll ADJR FL_RTCB_ReadAdjustValue
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadAdjustValue(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ADJR, (0x1ffU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Adjust Value
|
|
* @rmtoll ADJR FL_RTCB_WriteAdjustValue
|
|
* @param RTCBx RTCB instance
|
|
* @param adjustValue
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteAdjustValue(RTCB_Type *RTCBx, uint32_t adjustValue)
|
|
{
|
|
MODIFY_REG(RTCBx->ADJR, (0x1ffU << 0U), (adjustValue << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Adjust Direction
|
|
* @rmtoll ADJR ADSIGN FL_RTCB_SetAdjustDirection
|
|
* @param RTCBx RTCB instance
|
|
* @param adjustDir This parameter can be one of the following values:
|
|
* @arg @ref FL_RTCB_ADJUST_DIR_INCREASE
|
|
* @arg @ref FL_RTCB_ADJUST_DIR_DECREASE
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_SetAdjustDirection(RTCB_Type *RTCBx, uint32_t adjustDir)
|
|
{
|
|
MODIFY_REG(RTCBx->ADJR, RTCB_ADJR_ADSIGN_Msk, adjustDir);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Adjust Direction
|
|
* @rmtoll ADJR ADSIGN FL_RTCB_GetAdjustDirection
|
|
* @param RTCBx RTCB instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_RTCB_ADJUST_DIR_INCREASE
|
|
* @arg @ref FL_RTCB_ADJUST_DIR_DECREASE
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_GetAdjustDirection(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->ADJR, RTCB_ADJR_ADSIGN_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB enable
|
|
* @rmtoll CR EN FL_RTCB_Enable
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_Enable(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->CR, RTCB_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB enable status
|
|
* @rmtoll CR EN FL_RTCB_IsEnabled
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabled(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->CR, RTCB_CR_EN_Msk) == RTCB_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB disable
|
|
* @rmtoll CR EN FL_RTCB_Disable
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_Disable(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->CR, RTCB_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Tamper Source
|
|
* @rmtoll STPCR TAMPSEL FL_RTCB_SetTamperSource
|
|
* @param RTCBx RTCB instance
|
|
* @param select This parameter can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_NONE
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_TAMPER_PIN
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_XTLF
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_BOTH
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_SetTamperSource(RTCB_Type *RTCBx, uint32_t select)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCR, RTCB_STPCR_TAMPSEL_Msk, select);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Tamper Source
|
|
* @rmtoll STPCR TAMPSEL FL_RTCB_GetTamperSource
|
|
* @param RTCBx RTCB instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_NONE
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_TAMPER_PIN
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_XTLF
|
|
* @arg @ref FL_RTCB_TIME_CLEAR_BOTH
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_GetTamperSource(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCR, RTCB_STPCR_TAMPSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Tamper Pin Digital Filter enable
|
|
* @rmtoll STPCR DF FL_RTCB_EnableTamperPinDigitalFilter
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableTamperPinDigitalFilter(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->STPCR, RTCB_STPCR_DF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Tamper Pin Digital Filter enable status
|
|
* @rmtoll STPCR DF FL_RTCB_IsEnabledTamperPinDigitalFilter
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledTamperPinDigitalFilter(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCR, RTCB_STPCR_DF_Msk) == RTCB_STPCR_DF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Tamper Pin Digital Filter disable
|
|
* @rmtoll STPCR DF FL_RTCB_DisableTamperPinDigitalFilter
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableTamperPinDigitalFilter(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->STPCR, RTCB_STPCR_DF_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Time Stamp Edge
|
|
* @rmtoll STPCR TSEDGE FL_RTCB_SetTimeStampEdge
|
|
* @param RTCBx RTCB instance
|
|
* @param edge This parameter can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIMESTAMP_EDGE_RISING
|
|
* @arg @ref FL_RTCB_TIMESTAMP_EDGE_FALLING
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_SetTimeStampEdge(RTCB_Type *RTCBx, uint32_t edge)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCR, RTCB_STPCR_TSEDGE_Msk, edge);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Time Stamp Edge
|
|
* @rmtoll STPCR TSEDGE FL_RTCB_GetTimeStampEdge
|
|
* @param RTCBx RTCB instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_RTCB_TIMESTAMP_EDGE_RISING
|
|
* @arg @ref FL_RTCB_TIMESTAMP_EDGE_FALLING
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_GetTimeStampEdge(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCR, RTCB_STPCR_TSEDGE_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Tamper enable
|
|
* @rmtoll STPCR TAMPEN FL_RTCB_EnableTamper
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableTamper(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->STPCR, RTCB_STPCR_TAMPEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Tamper enable status
|
|
* @rmtoll STPCR TAMPEN FL_RTCB_IsEnabledTamper
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledTamper(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCR, RTCB_STPCR_TAMPEN_Msk) == RTCB_STPCR_TAMPEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Tamper Disable
|
|
* @rmtoll STPCR TAMPEN FL_RTCB_DisableTamper
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableTamper(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->STPCR, RTCB_STPCR_TAMPEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Time Stamp enable
|
|
* @rmtoll STPCR TSEN FL_RTCB_EnableTimestamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_EnableTimestamp(RTCB_Type *RTCBx)
|
|
{
|
|
SET_BIT(RTCBx->STPCR, RTCB_STPCR_TSEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Time Stamp enable status
|
|
* @rmtoll STPCR TSEN FL_RTCB_IsEnabledTimestamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_IsEnabledTimestamp(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCR, RTCB_STPCR_TSEN_Msk) == RTCB_STPCR_TSEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief RTCB Time Stamp Disable
|
|
* @rmtoll STPCR TSEN FL_RTCB_DisableTimestamp
|
|
* @param RTCBx RTCB instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_DisableTimestamp(RTCB_Type *RTCBx)
|
|
{
|
|
CLEAR_BIT(RTCBx->STPCR, RTCB_STPCR_TSEN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Hour Value
|
|
* @rmtoll STPCLKRR FL_RTCB_ReadTimestampHour
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampHour(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCLKRR, (0x3fU << 16U)) >> 16U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Hour Value
|
|
* @rmtoll STPCLKRR FL_RTCB_WriteTimestampHour
|
|
* @param RTCBx RTCB instance
|
|
* @param hour
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampHour(RTCB_Type *RTCBx, uint32_t hour)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCLKRR, (0x3fU << 16U), (hour << 16U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Minute Value
|
|
* @rmtoll STPCLKRR FL_RTCB_ReadTimestampMinute
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampMinute(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCLKRR, (0x7fU << 8U)) >> 8U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Minute Value
|
|
* @rmtoll STPCLKRR FL_RTCB_WriteTimestampMinute
|
|
* @param RTCBx RTCB instance
|
|
* @param minute
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampMinute(RTCB_Type *RTCBx, uint32_t minute)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCLKRR, (0x7fU << 8U), (minute << 8U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Second Value
|
|
* @rmtoll STPCLKRR FL_RTCB_ReadTimestampSecond
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampSecond(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCLKRR, (0x7fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Second Value
|
|
* @rmtoll STPCLKRR FL_RTCB_WriteTimestampSecond
|
|
* @param RTCBx RTCB instance
|
|
* @param second
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampSecond(RTCB_Type *RTCBx, uint32_t second)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCLKRR, (0x7fU << 0U), (second << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Year Value
|
|
* @rmtoll STPCALRR FL_RTCB_ReadTimestampYear
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampYear(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCALRR, (0xffU << 24U)) >> 24U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Year Value
|
|
* @rmtoll STPCALRR FL_RTCB_WriteTimestampYear
|
|
* @param RTCBx RTCB instance
|
|
* @param year
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampYear(RTCB_Type *RTCBx, uint32_t year)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCALRR, (0xffU << 24U), (year << 24U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Month Value
|
|
* @rmtoll STPCALRR FL_RTCB_ReadTimestampMonth
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampMonth(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCALRR, (0x1fU << 16U)) >> 16U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Month Value
|
|
* @rmtoll STPCALRR FL_RTCB_WriteTimestampMonth
|
|
* @param RTCBx RTCB instance
|
|
* @param month
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampMonth(RTCB_Type *RTCBx, uint32_t month)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCALRR, (0x1fU << 16U), (month << 16U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Stamp Day Value
|
|
* @rmtoll STPCALRR FL_RTCB_ReadTimestampDay
|
|
* @param RTCBx RTCB instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadTimestampDay(RTCB_Type *RTCBx)
|
|
{
|
|
return (uint32_t)(READ_BIT(RTCBx->STPCALRR, (0x3fU << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Stamp Day Value
|
|
* @rmtoll STPCALRR FL_RTCB_WriteTimestampDay
|
|
* @param RTCBx RTCB instance
|
|
* @param day
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteTimestampDay(RTCB_Type *RTCBx, uint32_t day)
|
|
{
|
|
MODIFY_REG(RTCBx->STPCALRR, (0x3fU << 0U), (day << 0U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get RTCB Backup Register
|
|
* @rmtoll BACKUP FL_RTCB_ReadBackupRegisters
|
|
* @param RTCBx RTCB instance
|
|
* @param backupRegNum This parameter can be one of the following values:
|
|
* @arg @ref FL_RTCB_BACKUP_0
|
|
* @arg @ref FL_RTCB_BACKUP_1
|
|
* @arg @ref FL_RTCB_BACKUP_2
|
|
* @arg @ref FL_RTCB_BACKUP_3
|
|
* @arg @ref FL_RTCB_BACKUP_4
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_RTCB_ReadBackupRegisters(RTCB_Type *RTCBx, uint32_t backupRegNum)
|
|
{
|
|
FL_RTCB_Backup_ADDR *addr = (FL_RTCB_Backup_ADDR *)&RTCBx->BKR0;
|
|
return (uint32_t)(READ_BIT(addr->backup[backupRegNum], 0xFFFFFFFFu));
|
|
}
|
|
|
|
/**
|
|
* @brief Set RTCB Backup Register
|
|
* @rmtoll BACKUP FL_RTCB_WriteBackupRegisters
|
|
* @param RTCBx RTCB instance
|
|
* @param backupReg
|
|
* @param backupNum
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_RTCB_WriteBackupRegisters(RTCB_Type *RTCBx, uint32_t backupReg, uint32_t backupNum)
|
|
{
|
|
FL_RTCB_Backup_ADDR *addr = (FL_RTCB_Backup_ADDR *)&RTCBx->BKR0;
|
|
MODIFY_REG(addr->backup[backupNum], (0xFFFFFFFFu), backupReg);
|
|
}
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup RTCB_FL_EF_Init Initialization and de-initialization functions
|
|
* @{
|
|
*/
|
|
FL_ErrorStatus FL_RTCB_DeInit(RTCB_Type *RTCBx);
|
|
void FL_RTCB_StructInit(FL_RTCB_InitTypeDef *initStruct);
|
|
FL_ErrorStatus FL_RTCB_GetTime(RTCB_Type *RTCBx, FL_RTCB_InitTypeDef *initStruct);
|
|
FL_ErrorStatus FL_RTCB_Init(RTCB_Type *RTCBx, FL_RTCB_InitTypeDef *initStruct);
|
|
FL_ErrorStatus FL_RTCB_ConfigTime(RTCB_Type *RTCBx, FL_RTCB_InitTypeDef *initStruct);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __FM33LG0XX_FL_RTCB_H*/
|
|
|
|
/*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-14*************************/
|
|
/*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|