/** ****************************************************************************** * @file fm33a0xxev_wwdt.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_wwdt.h" /** @addtogroup fm33a0xxev_StdPeriph_Driver * @{ */ /** @defgroup WWDT * @brief WWDT driver modules * @{ */ /* µ±CPUÏò´ËµØÖ·Ð´Èë0x5AʱÆô¶¯WWDT¶¨Ê±Æ÷ (WWDT Control,write only) ÔÚÆô¶¯WWDTºó£¬µ±CPUÏò´ËµØÖ·Ð´Èë0xACʱÇåÁã¼ÆÊýÆ÷ Ïà¹Øº¯Êý */ void WWDT_CR_Write(uint32_t SetValue) { WWDT->CR = (SetValue & WWDT_CR_CON_Msk); } /* ÅäÖÃWWDT¿´ÃŹ·Òç³öʱ¼ä£¬¸´Î»Öµ011£¬ÓÉÓÚÉϵçºóϵͳʱÖÓĬÈÏΪ8Mhz£¬ËùÒÔĬÈÏÒç³öÖÜÆÚ´óÔ¼32ms (WWDT Config) 000£ºTPCLK * 4096 * 1 001£ºTPCLK * 4096 * 4 010£ºTPCLK * 4096 * 16 011£ºTPCLK * 4096 * 64 100£ºTPCLK * 4096 * 128 101£ºTPCLK * 4096 * 256 110£ºTPCLK * 4096 * 512 111£ºTPCLK * 4096 * 1024 Ïà¹Øº¯Êý */ void WWDT_CFGR_Write(uint32_t SetValue) { WWDT->CFGR = (SetValue & WWDT_CFGR_CFG_Msk); } uint32_t WWDT_CFGR_Read(void) { return (WWDT->CFGR & WWDT_CFGR_CFG_Msk); } /* WWDT¼ÆÊý¼Ä´æÆ÷Öµ£¬Èí¼þ¿Éͨ¹ý²éѯ´Ë¼Ä´æÆ÷Á˽âWWDT¼ÆÊ±½ø¶È (WWDT Counter value,read only) Ïà¹Øº¯Êý */ uint32_t WWDT_CNTR_Read(void) { return (WWDT->CNTR & WWDT_CNTR_CNT_Msk); } /* WWDTÖжÏʹÄÜ (WWDT Interrupt Enable) 0£ºÖжÏʹÄܽûÖ¹ 1£ºÖжÏʹÄÜ´ò¿ª Ïà¹Øº¯Êý */ void WWDT_IER_IE_Setable(FunState NewState) { if (NewState == ENABLE) { WWDT->IER |= (WWDT_IER_IE_Msk); } else { WWDT->IER &= ~(WWDT_IER_IE_Msk); } } FunState WWDT_IER_IE_Getable(void) { if (WWDT->IER & (WWDT_IER_IE_Msk)) { return ENABLE; } else { return DISABLE; } } /* WWDT 75%¼ÆÊ±ÖжϱêÖ¾£¬Ð´1ÇåÁã (Near Overflow Flag,write 1 to clear) 0£ºÎÞÖжϲúÉú 1£ºÖжϱêÖ¾ÖÃλ Èç¹ûIE=1£¬Ôò´Ë¼Ä´æÆ÷ÖÃ뽫´¥·¢ÖÐ¶Ï Ïà¹Øº¯Êý */ void WWDT_ISR_NOVF_Clr(void) { WWDT->ISR = WWDT_ISR_NOVF_Msk; } FlagStatus WWDT_ISR_NOVF_Chk(void) { if (WWDT->ISR & WWDT_ISR_NOVF_Msk) { return SET; } else { return RESET; } } /* WWDTµÄ4096Ô¤·ÖƵ¼ÆÊýÆ÷µ±Ç°¼ÆÊýÖµ£¬Ö»¶Á (WWDT prescaler Divider Counte,read only) Ïà¹Øº¯Êý */ uint32_t WWDT_PSCR_Read(void) { return (WWDT->PSCR & WWDT_PSCR_DIV_CNT_Msk); } void WWDT_Deinit(void) { //WWDT->CR = 0x00000000; //WWDT->CFGR = 0x00000003; //WWDT->CNTR = 0x00000000; //WWDT->IER = 0x00000000; //WWDT->ISR = 0x00000000; //WWDT->PSCR = 0x00000000; } /******END OF FILE****/