/**
|
******************************************************************************
|
* @file fm33a0xxev_vrtc.c
|
* @author FM33A0XXEV Application Team
|
* @version V1.0.0
|
* @date 16-April-2020
|
* @brief This file provides firmware functions to manage the following
|
* functionalities of....:
|
*
|
*/
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "fm33a0xxev_vrtc.h"
|
|
/** @addtogroup fm33a0xxev_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @defgroup VRTC
|
* @brief VRTC driver modules
|
* @{
|
*/
|
|
/* RCMFʹÄܼĴæÆ÷
|
0£º¹Ø±ÕRCMF
|
1£ºÊ¹ÄÜRCMF
|
¡¾×¢¡¿µ±Ê¹ÄÜÁËRTC×Ô¶¯Î²¹ºó£¬RCMFÊÜÓ²¼þ¿ØÖÆ×ÔÐÐÆô¶¯ºÍ¹Ø±Õ Ïà¹Øº¯Êý */
|
void VRTC_RCMFCR_EN_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
VRTC->RCMFCR |= (VRTC_RCMFCR_EN_Msk);
|
}
|
else
|
{
|
VRTC->RCMFCR &= ~(VRTC_RCMFCR_EN_Msk);
|
}
|
}
|
|
FunState VRTC_RCMFCR_EN_Getable(void)
|
{
|
if (VRTC->RCMFCR & (VRTC_RCMFCR_EN_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
|
/* RCMFƵÂʵ÷У¼Ä´æÆ÷ Ïà¹Øº¯Êý */
|
void VRTC_RCMFCR_TRIM_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = VRTC->RCMFCR;
|
tmpreg &= ~(VRTC_RCMFCR_TRIM_Msk);
|
tmpreg |= (SetValue & VRTC_RCMFCR_TRIM_Msk);
|
VRTC->RCMFCR = tmpreg;
|
}
|
|
uint32_t VRTC_RCMFCR_TRIM_Get(void)
|
{
|
return (VRTC->RCMFCR & VRTC_RCMFCR_TRIM_Msk);
|
}
|
|
/* ChopperʹÄÜ Ïà¹Øº¯Êý */
|
void VRTC_RCLPCR_CHOPEN_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
VRTC->RCLPCR |= (VRTC_RCLPCR_CHOPEN_Msk);
|
}
|
else
|
{
|
VRTC->RCLPCR &= ~(VRTC_RCLPCR_CHOPEN_Msk);
|
}
|
}
|
|
FunState VRTC_RCLPCR_CHOPEN_Getable(void)
|
{
|
if (VRTC->RCLPCR & (VRTC_RCLPCR_CHOPEN_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
|
/* RCLPʹÄÜÐźÅ
|
0£ºÊ¹ÄÜRCLP
|
1£º¹Ø±ÕRCLP
|
¡¾×¢¡¿XTLFÒ쳣ͣÕñʱ£¬×Ô¶¯Ê¹ÄÜRCLP Ïà¹Øº¯Êý */
|
void VRTC_RCLPCR_RCLP_OFF_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
VRTC->RCLPCR |= (VRTC_RCLPCR_RCLP_OFF_Msk);
|
}
|
else
|
{
|
VRTC->RCLPCR &= ~(VRTC_RCLPCR_RCLP_OFF_Msk);
|
}
|
}
|
|
FunState VRTC_RCLPCR_RCLP_OFF_Getable(void)
|
{
|
if (VRTC->RCLPCR & (VRTC_RCLPCR_RCLP_OFF_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
|
/* RCLPµ÷Уֵ¼Ä´æÆ÷
|
0000 0000£ºÆµÂÊ×îµÍ
|
1111 1111£ºÆµÂÊ×î¸ß Ïà¹Øº¯Êý */
|
void VRTC_RCLPTR_Write(uint32_t SetValue)
|
{
|
VRTC->RCLPTR = (SetValue & VRTC_RCLPTR_RCLP_TRIM_Msk);
|
}
|
|
uint32_t VRTC_RCLPTR_Read(void)
|
{
|
return (VRTC->RCLPTR & VRTC_RCLPTR_RCLP_TRIM_Msk);
|
}
|
/*
|
rclpÐ£×¼ÖµÔØÈ뺯Êý
|
¹¦ÄÜ:rclpÐ£×¼ÖµÔØÈë
|
ÊäÈ룺ҪÉèÖõÄRLPƵÂÊ
|
*/
|
void VRTC_Init_RCLP_Trim(void)
|
{
|
uint32_t Temp32;
|
|
Temp32 = const_rclp_Trim;
|
|
if( ((Temp32>>16)&0x000000FF) == ((~Temp32)&0x000000FF) ) //Õý·´ÂëУÑéÅжÏ
|
{
|
if(VRTC->RCLPTR!=Temp32&0x000000FF)
|
{
|
VRTC_RCLPTR_Write(Temp32&0x000000FF);
|
}
|
}
|
else
|
{
|
VRTC_RCLPTR_Write(0x00000080);
|
}
|
}
|
|
void VRTC_XTLFCR_XTLFIPW_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = VRTC->XTLFCR;
|
tmpreg &= ~(VRTC_XTLFCR_XTLFIPW_Msk);
|
tmpreg |= (SetValue & VRTC_XTLFCR_XTLFIPW_Msk);
|
VRTC->XTLFCR = tmpreg;
|
}
|
|
uint32_t VRTC_XTLFCR_XTLFIPW_Get(void)
|
{
|
return (VRTC->XTLFCR & VRTC_XTLFCR_XTLFIPW_Msk);
|
}
|
|
/* ADC¹¤×÷ʱÖÓÑ¡Ôñ¼Ä´æÆ÷
|
000£ºRCMF
|
001£ºRCMF/2
|
010£ºRCMF/4
|
011£ºRCMF/8
|
100£ºRCMF/16
|
101£ºRCMF/32
|
110£ºRCLP
|
111£ºXTLF Ïà¹Øº¯Êý */
|
void VRTC_ADCCR_CKS_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = VRTC->ADCCR;
|
tmpreg &= ~(VRTC_ADCCR_CKS_Msk);
|
tmpreg |= (SetValue & VRTC_ADCCR_CKS_Msk);
|
VRTC->ADCCR = tmpreg;
|
}
|
|
uint32_t VRTC_ADCCR_CKS_Get(void)
|
{
|
return (VRTC->ADCCR & VRTC_ADCCR_CKS_Msk);
|
}
|
|
/* ADC¹¤×÷ʱÖÓʹÄÜ
|
0£º¹Ø±ÕADC¹¤×÷ʱÖÓ
|
1£ºÊ¹ÄÜADC¹¤×÷ʱÖÓ Ïà¹Øº¯Êý */
|
void VRTC_ADCCR_CKE_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
VRTC->ADCCR |= (VRTC_ADCCR_CKE_Msk);
|
}
|
else
|
{
|
VRTC->ADCCR &= ~(VRTC_ADCCR_CKE_Msk);
|
}
|
}
|
|
FunState VRTC_ADCCR_CKE_Getable(void)
|
{
|
if (VRTC->ADCCR & (VRTC_ADCCR_CKE_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
|
/* XTLFµÍƵ¼ì²â±¨¾¯ÖжÏʹÄÜ£¬1ÓÐЧ Ïà¹Øº¯Êý */
|
void VRTC_LFDIER_LFDET_IE_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
VRTC->LFDIER |= (VRTC_LFDIER_LFDET_IE_Msk);
|
}
|
else
|
{
|
VRTC->LFDIER &= ~(VRTC_LFDIER_LFDET_IE_Msk);
|
}
|
}
|
|
FunState VRTC_LFDIER_LFDET_IE_Getable(void)
|
{
|
if (VRTC->LFDIER & (VRTC_LFDIER_LFDET_IE_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
|
/* µÍƵͣÕñ¼ì²â״̬Êä³ö
|
1£ºXTLFÕý³£
|
0£ºXTLFÍ£Õñ Ïà¹Øº¯Êý */
|
FlagStatus VRTC_LFDISR_LFDETO_Chk(void)
|
{
|
if (VRTC->LFDISR & VRTC_LFDISR_LFDETO_Msk)
|
{
|
return SET;
|
}
|
else
|
{
|
return RESET;
|
}
|
}
|
|
/* µÍƵͣÕñ¼ì²âÖжϱêÖ¾¼Ä´æÆ÷£¬XTLFÍ£ÕñʱӲ¼þÒì²½ÖÃ룬Èí¼þд1ÇåÁ㣻ֻÓÐÔÚLFDETO²»Îª0µÄÇé¿öϲÅÄܹ»Çå³ý´Ë¼Ä´æÆ÷ Ïà¹Øº¯Êý */
|
void VRTC_LFDISR_LFDET_IF_Clr(void)
|
{
|
VRTC->LFDISR = VRTC_LFDISR_LFDET_IF_Msk;
|
}
|
|
FlagStatus VRTC_LFDISR_LFDET_IF_Chk(void)
|
{
|
if (VRTC->LFDISR & VRTC_LFDISR_LFDET_IF_Msk)
|
{
|
return SET;
|
}
|
else
|
{
|
return RESET;
|
}
|
}
|
|
/*
|
rcmfÐ£×¼ÖµÔØÈ뺯Êý
|
¹¦ÄÜ:rcmfÐ£×¼ÖµÔØÈë
|
ÊäÈ룺ҪÉèÖõÄRCMFƵÂÊ
|
*/
|
void VRTC_Init_RCMF_Trim(void)
|
{
|
uint32_t Temp32;
|
|
Temp32 = const_rcmf_Trim;
|
|
if( ((Temp32>>16)&0x0000FFFF) == ((~Temp32)&0x0000FFFF) ) //Õý·´ÂëУÑéÅжÏ
|
{
|
VRTC_RCMFCR_TRIM_Set(Temp32&0x000000FF);
|
}
|
else
|
{
|
VRTC_RCMFCR_TRIM_Set(0x0000001F);
|
}
|
}
|
|
void VRTC_Deinit(void)
|
{
|
//VRTC->RCMFCR = 0x00000040;
|
//VRTC->RCLPCR = 0x00000000;
|
//VRTC->RCLPTR = 0x00000000;
|
//VRTC->XTLFCR = ;
|
//VRTC->ADCCR = 0x00000004;
|
//VRTC->LFDIER = 0x00000000;
|
//VRTC->LFDISR = 0x00000000;
|
}
|
|
/******END OF FILE****/
|