/** ****************************************************************************** * @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****/