123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*!
- * @file apm32f10x_wwdt.c
- *
- * @brief This file contains all the functions for the WWDT peripheral
- *
- * @version V1.0.1
- *
- * @date 2021-03-23
- *
- */
- #include "apm32f10x_wwdt.h"
- #include "apm32f10x_rcm.h"
- /** @addtogroup Peripherals_Library Standard Peripheral Library
- @{
- */
- /** @addtogroup WWDT_Driver WWDT Driver
- @{
- */
- /** @addtogroup WWDT_Fuctions Fuctions
- @{
- */
- /*!
- * @brief Reset the WWDT peripheral registers
- *
- * @param None
- *
- * @retval None
- */
- void WWDT_Reset(void)
- {
- RCM_EnableAPB1PeriphReset(RCM_APB1_PERIPH_WWDT);
- RCM_DisableAPB1PeriphReset(RCM_APB1_PERIPH_WWDT);
- }
- /*!
- * @brief Config the WWDT Timebase
- *
- * @param timebase: WWDT Prescaler
- * The parameter can be one of following values:
- * @arg WWDT_TIME_BASE_1: WWDT counter clock = (PCLK1/4096)/1
- * @arg WWDT_TIME_BASE_2: WWDT counter clock = (PCLK1/4096)/2
- * @arg WWDT_TIME_BASE_4: WWDT counter clock = (PCLK1/4096)/4
- * @arg WWDT_TIME_BASE_8: WWDT counter clock = (PCLK1/4096)/8
- *
- * @retval None
- */
- void WWDT_ConfigTimebase(WWDT_TIME_BASE_T timeBase)
- {
- __IO uint32_t reg;
- reg = WWDT->CFG & 0xFFFFFE7F;
- reg |= timeBase;
- WWDT->CFG = reg;
- }
- /*!
- * @brief Config the WWDT Window data
- *
- * @param windowdata: window data which compare with the downcounter
- *
- * @retval None
- *
- * @note The windowdata must be lower than 0x80
- */
- void WWDT_ConfigWindowData(uint8_t windowData)
- {
- __IO uint32_t reg;
- reg = WWDT->CFG & 0xFFFFFF80;
- reg |= windowData & 0x7F;
- WWDT->CFG = reg;
- }
- /*!
- * @brief Config the WWDT counter value
- *
- * @param counter: Specifies the watchdog counter value
- *
- * @retval None
- *
- * @note The counter between 0x40 and 0x7F
- */
- void WWDT_ConfigCounter(uint8_t counter)
- {
- WWDT->CTRL = counter & 0x7F;
- }
- /*!
- * @brief Enable the WWDT Early Wakeup interrupt
- *
- * @param None
- *
- * @retval None
- */
- void WWDT_EnableEWI(void)
- {
- WWDT->CFG_B.EWIEN = SET;
- }
- /*!
- * @brief Enable WWDT and set the counter value
- *
- * @param counter: the window watchdog counter value
- *
- * @retval None
- *
- * @note The counter between 0x40 and 0x7F
- */
- void WWDT_Enable(uint8_t counter)
- {
- WWDT->CTRL = counter | 0x00000080;
- }
- /*!
- * @brief Read the Early Wakeup interrupt flag
- *
- * @param None
- *
- * @retval the state of the Early Wakeup interrupt flagte
- */
- uint8_t WWDT_ReadFlag(void)
- {
- return (uint8_t) (WWDT->STS);
- }
- /*!
- * @brief Clear the Early Wakeup interrupt flag
- *
- * @param None
- *
- * @retval None
- */
- void WWDT_ClearFlag(void)
- {
- WWDT->STS_B.EWIFLG = RESET;
- }
- /**@} end of group WWDT_Fuctions*/
- /**@} end of group WWDT_Driver */
- /**@} end of group Peripherals_Library*/
|