/** ****************************************************************************** * @file fm33a0xxev_svd.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_svd.h" /** @addtogroup fm33a0xxev_StdPeriph_Driver * @{ */ /** @defgroup SVD * @brief SVD driver modules * @{ */ /* SVD±¨¾¯ãÐÖµµµÎ»ÉèÖ㬲μû11.3.3¼ì²âãÐÖµ (SVD threshold level) Ïà¹Øº¯Êý */ void SVD_CFGR_LVL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = SVD->CFGR; tmpreg &= ~(SVD_CFGR_LVL_Msk); tmpreg |= (SetValue & SVD_CFGR_LVL_Msk); SVD->CFGR = tmpreg; } uint32_t SVD_CFGR_LVL_Get(void) { return (SVD->CFGR & SVD_CFGR_LVL_Msk); } /* Êý×ÖÂ˲¨Ê¹ÄÜ£¨MOD=1ʱ±ØÐëÖÃ1£© (Digital Filter Enable) 1£ºÆô¶¯SVDÊä³öµÄÊý×ÖÂ˲¨ 0£º¹Ø±ÕSVDÊä³öµÄÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */ void SVD_CFGR_DFEN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->CFGR |= (SVD_CFGR_DFEN_Msk); } else { SVD->CFGR &= ~(SVD_CFGR_DFEN_Msk); } } FunState SVD_CFGR_DFEN_Getable(void) { if (SVD->CFGR & (SVD_CFGR_DFEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* SVD¹¤×÷ģʽѡÔñ£¬ÅäÖÃģʽºó»¹ÒªÖÃλSVD_CR.EN²Å»áÆô¶¯SVD (SVD Mode) 1£º¼äЪʹÄÜģʽ 0£º³£Ê¹ÄÜģʽ ×¢Ò⣺¼äЪʹÄÜģʽϱØÐ뿪ÆôÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */ void SVD_CFGR_MOD_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = SVD->CFGR; tmpreg &= ~(SVD_CFGR_MOD_Msk); tmpreg |= (SetValue & SVD_CFGR_MOD_Msk); SVD->CFGR = tmpreg; } uint32_t SVD_CFGR_MOD_Get(void) { return (SVD->CFGR & SVD_CFGR_MOD_Msk); } /* SVD Interval£¬SVD¼äЪʹÄܼä¸ô (SVD periodic interval) 00£º62.5ms 01£º256ms 10£º1s 11£º4s Ïà¹Øº¯Êý */ void SVD_CFGR_ITVL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = SVD->CFGR; tmpreg &= ~(SVD_CFGR_ITVL_Msk); tmpreg |= (SetValue & SVD_CFGR_ITVL_Msk); SVD->CFGR = tmpreg; } uint32_t SVD_CFGR_ITVL_Get(void) { return (SVD->CFGR & SVD_CFGR_ITVL_Msk); } /* SVD²âÊÔʹÄÜ£¬±ÜÃâд1 (SVD test enable) Ïà¹Øº¯Êý */ void SVD_CR_TE_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->CR |= (SVD_CR_TE_Msk); } else { SVD->CR &= ~(SVD_CR_TE_Msk); } } FunState SVD_CR_TE_Getable(void) { if (SVD->CR & (SVD_CR_TE_Msk)) { return ENABLE; } else { return DISABLE; } } /* SVSÍⲿµçÔ´¼ì²âͨµÀ¿ØÖÆÐźŠ(SVS external monitor channel enable) 0£ºSVSͨµÀ¹Ø±Õ 1£ºSVSͨµÀʹÄÜ µ±EN=1ʱ£¬¸ù¾ÝSVDLVL¼Ä´æÆ÷¿ÉÒÔÉèÖÃSVSÊäÈëºóÊÇ·ñ¾­¹ýÄÚ²¿µç×è·Öѹ£»Èç¹ûLVL=1111£¬ÔòSVSÊäÈë²»×ö·Öѹ£¬Èç¹ûLVL != 1111£¬ÔòSVSÊäÈë¾­¹ýÄÚ²¿µç×è·Öѹ¡£ Ïà¹Øº¯Êý */ void SVD_CR_SVSEN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->CR |= (SVD_CR_SVSEN_Msk); } else { SVD->CR &= ~(SVD_CR_SVSEN_Msk); } } FunState SVD_CR_SVSEN_Getable(void) { if (SVD->CR & (SVD_CR_SVSEN_Msk)) { return ENABLE; } else { return DISABLE; } } void SVD_CR_SVDEN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->CR |= (SVD_CR_SVDEN_Msk); } else { SVD->CR &= ~(SVD_CR_SVDEN_Msk); } } FunState SVD_CR_SVDEN_Getable(void) { if (SVD->CR & (SVD_CR_SVDEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* µçÔ´µøÂäÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Fall interrupt enable) Ïà¹Øº¯Êý */ void SVD_IER_PFIE_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->IER |= (SVD_IER_PFIE_Msk); } else { SVD->IER &= ~(SVD_IER_PFIE_Msk); } } FunState SVD_IER_PFIE_Getable(void) { if (SVD->IER & (SVD_IER_PFIE_Msk)) { return ENABLE; } else { return DISABLE; } } /* µçÔ´»Ö¸´ÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Rise interrupt enable) Ïà¹Øº¯Êý */ void SVD_IER_PRIE_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->IER |= (SVD_IER_PRIE_Msk); } else { SVD->IER &= ~(SVD_IER_PRIE_Msk); } } FunState SVD_IER_PRIE_Getable(void) { if (SVD->IER & (SVD_IER_PRIE_Msk)) { return ENABLE; } else { return DISABLE; } } /* SVDµçÔ´¼ì²âÊä³ö (SVD output) 1£ºµçÔ´µçѹ¸ßÓÚSVDµ±Ç°ãÐÖµ 0£ºµçÔ´µçѹµÍÓÚSVDµ±Ç°ãÐÖµ Ïà¹Øº¯Êý */ FlagStatus SVD_ISR_SVDO_Chk(void) { if (SVD->ISR & SVD_ISR_SVDO_Msk) { return SET; } else { return RESET; } } /* SVDÊä³öËø´æÐźţ¬Êý×ÖµçÂ·Ëø´æµÄSVD״̬ (SVD registered output) Ïà¹Øº¯Êý */ FlagStatus SVD_ISR_SVDR_Chk(void) { if (SVD->ISR & SVD_ISR_SVDR_Msk) { return SET; } else { return RESET; } } /* µçÔ´µøÂäÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹµøÂäµ½SVDãÐÖµÖ®ÏÂʱÖÃ룬Èí¼þд1ÇåÁã (Power fall flag) Ïà¹Øº¯Êý */ void SVD_ISR_PFF_Clr(void) { SVD->ISR = SVD_ISR_PFF_Msk; } FlagStatus SVD_ISR_PFF_Chk(void) { if (SVD->ISR & SVD_ISR_PFF_Msk) { return SET; } else { return RESET; } } /* µçÔ´»Ö¸´ÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹÉÏÉýµ½SVDãÐÖµÖ®ÉÏʱÖÃ룬Èí¼þд1ÇåÁã (Power rise flag) Ïà¹Øº¯Êý */ void SVD_ISR_PRF_Clr(void) { SVD->ISR = SVD_ISR_PRF_Msk; } FlagStatus SVD_ISR_PRF_Chk(void) { if (SVD->ISR & SVD_ISR_PRF_Msk) { return SET; } else { return RESET; } } /* 1.0V»ù×¼ÊäÈëʹÄÜÐźŠ(1.0V reference enable) 1£ºÊ¹ÄÜ1.0V»ù×¼ÊäÈë 0£º¹Ø±Õ1.0V»ù×¼ÊäÈë Ïà¹Øº¯Êý */ void SVD_VSR_V1P0EN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->VSR |= (SVD_VSR_V1P0EN_Msk); } else { SVD->VSR &= ~(SVD_VSR_V1P0EN_Msk); } } FunState SVD_VSR_V1P0EN_Getable(void) { if (SVD->VSR & (SVD_VSR_V1P0EN_Msk)) { return ENABLE; } else { return DISABLE; } } /* 0.95V»ù×¼ÊäÈëʹÄÜÐźŠ(0.95V reference enable) 1£ºÊ¹ÄÜ0.95V»ù×¼ÊäÈë 0£º¹Ø±Õ0.95V»ù×¼ÊäÈë Ïà¹Øº¯Êý */ void SVD_VSR_V0P95EN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->VSR |= (SVD_VSR_V0P95EN_Msk); } else { SVD->VSR &= ~(SVD_VSR_V0P95EN_Msk); } } FunState SVD_VSR_V0P95EN_Getable(void) { if (SVD->VSR & (SVD_VSR_V0P95EN_Msk)) { return ENABLE; } else { return DISABLE; } } /* 0.9V»ù×¼ÊäÈëʹÄÜÐźŠ(0.9V reference enable) 1£ºÊ¹ÄÜ0.9V»ù×¼ÊäÈë 0£º¹Ø±Õ0.9V»ù×¼ÊäÈë Ïà¹Øº¯Êý */ void SVD_VSR_V0P9EN_Setable(FunState NewState) { if (NewState == ENABLE) { SVD->VSR |= (SVD_VSR_V0P9EN_Msk); } else { SVD->VSR &= ~(SVD_VSR_V0P9EN_Msk); } } FunState SVD_VSR_V0P9EN_Getable(void) { if (SVD->VSR & (SVD_VSR_V0P9EN_Msk)) { return ENABLE; } else { return DISABLE; } } void SVD_Deinit(void) { //SVD->CFGR = 0x00000008; //SVD->CR = 0x00000000; //SVD->IER = 0x00000000; //SVD->ISR = 0x00000000; //SVD->VSR = 0x00000000; } /********************************* SVD³õʼ»¯ÅäÖú¯Êý ¹¦ÄÜ£ºSVD³õʼ»¯ÅäÖà ÊäÈë: ANAC_SVD_InitTypeDef* para£¬½á¹¹Ì庯ÊýÖÐÅäÖù¤×÷ģʽ¡¢ãÐÖµ¡¢Êý×ÖÂ˲¨µÈ¹¦ÄÜ Êä³ö: ÎÞ *********************************/ void SVD_Init(SVD_InitTypeDef* para) { SVD_CFGR_MOD_Set(para->SVDMOD); //SVD¹¤×÷ģʽѡÔñ SVD_CFGR_ITVL_Set(para->SVDITVL); //SVD¼äЪʹÄܼä¸ôÉèÖà SVD_CFGR_LVL_Set(para->SVDLVL); //SVD±¨¾¯ãÐÖµÉèÖà SVD_CFGR_DFEN_Setable(para->DFEN); //SVDÊý×ÖÂ˲¨ÉèÖã¨SVDMODE=1ʱ±ØÐëÖÃ1£© SVD_IER_PFIE_Setable(para->PFIE); //SVDµçÔ´µøÂäÖжÏÉèÖà SVD_IER_PRIE_Setable(para->PRIE); //SVDµçÔ´»Ö¸´ÖжÏÉèÖà SVD_CR_TE_Setable(DISABLE); //¹Ø±Õ²âÊÔ¹¦ÄÜ } /******END OF FILE****/