216 lines
5.7 KiB
C
216 lines
5.7 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_wwdg.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief WWDG STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩWWDG<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>塣
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#ifndef CIU32L051_STD_WWDG_H
|
|||
|
#define CIU32L051_STD_WWDG_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup WWDG WWDG
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD>Ź<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
/*------------------------------------------includes--------------------------------------------*/
|
|||
|
#include "ciu32l051_std_common.h"
|
|||
|
|
|||
|
/*--------------------------------------------define--------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup WWDG_Constants WWDG Constants
|
|||
|
* @brief WWDG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/* WWDGԤ<47><D4A4>Ƶ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define WWDG_PRESCALER_1 WWDG_CFG_WDGPR_DIV1 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/1 */
|
|||
|
#define WWDG_PRESCALER_2 WWDG_CFG_WDGPR_DIV2 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/2 */
|
|||
|
#define WWDG_PRESCALER_4 WWDG_CFG_WDGPR_DIV4 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/4 */
|
|||
|
#define WWDG_PRESCALER_8 WWDG_CFG_WDGPR_DIV8 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/8 */
|
|||
|
#define WWDG_PRESCALER_16 WWDG_CFG_WDGPR_DIV16 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/16 */
|
|||
|
#define WWDG_PRESCALER_32 WWDG_CFG_WDGPR_DIV32 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/32 */
|
|||
|
#define WWDG_PRESCALER_64 WWDG_CFG_WDGPR_DIV64 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/64 */
|
|||
|
#define WWDG_PRESCALER_128 WWDG_CFG_WDGPR_DIV128 /**< WWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>=(PCLK1/4096)/128 */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup WWDG_External_Functions WWDG External Functions
|
|||
|
* @brief WWDG<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>WWDG<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_start(void)
|
|||
|
{
|
|||
|
WWDG->CR |= WWDG_CR_WDGEN;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
* @param counter WWDG<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00-0x3F
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_refresh_counter(uint32_t counter)
|
|||
|
{
|
|||
|
MODIFY_REG(WWDG->CR, WWDG_CR_CNT, counter);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
* @retval uint32_t WWDG<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00-0x3F
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_wwdg_get_counter(void)
|
|||
|
{
|
|||
|
return(WWDG->CR & WWDG_CR_CNT);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ
|
|||
|
* @param prescaler WWDG<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ<EFBFBD><EFBFBD>
|
|||
|
* @arg WWDG_PRESCALER_1
|
|||
|
* @arg WWDG_PRESCALER_2
|
|||
|
* @arg WWDG_PRESCALER_4
|
|||
|
* @arg WWDG_PRESCALER_8
|
|||
|
* @arg WWDG_PRESCALER_16
|
|||
|
* @arg WWDG_PRESCALER_32
|
|||
|
* @arg WWDG_PRESCALER_64
|
|||
|
* @arg WWDG_PRESCALER_128
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_set_prescaler(uint32_t prescaler)
|
|||
|
{
|
|||
|
MODIFY_REG(WWDG->CFG, WWDG_CFG_WDGPR, prescaler);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡԤ<EFBFBD><EFBFBD>Ƶֵ
|
|||
|
* @retval uint32_t WWDG<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ<EFBFBD><EFBFBD>
|
|||
|
* @arg WWDG_PRESCALER_1
|
|||
|
* @arg WWDG_PRESCALER_2
|
|||
|
* @arg WWDG_PRESCALER_4
|
|||
|
* @arg WWDG_PRESCALER_8
|
|||
|
* @arg WWDG_PRESCALER_16
|
|||
|
* @arg WWDG_PRESCALER_32
|
|||
|
* @arg WWDG_PRESCALER_64
|
|||
|
* @arg WWDG_PRESCALER_128
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_wwdg_get_prescaler(void)
|
|||
|
{
|
|||
|
return(WWDG->CFG & WWDG_CFG_WDGPR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
* @param window WWDG<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00-0x3F
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_set_window(uint32_t window)
|
|||
|
{
|
|||
|
MODIFY_REG(WWDG->CFG, WWDG_CFG_WIN, window);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
* @retval uint32_t WWDG<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00-0x3F
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_wwdg_get_window(void)
|
|||
|
{
|
|||
|
return(WWDG->CFG & WWDG_CFG_WIN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief WWDG<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_interrupt_enable(void)
|
|||
|
{
|
|||
|
WWDG->CFG |= WWDG_CFG_EWI;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡWWDG<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʾʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾδʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_wwdg_get_interrupt_enable(void)
|
|||
|
{
|
|||
|
return((WWDG->CFG & WWDG_CFG_EWI) == WWDG_CFG_EWI);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡWWDG<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־״̬
|
|||
|
* @note <EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>EWI<EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD>λҲ<EFBFBD>ᱻ<EFBFBD><EFBFBD>1
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_wwdg_get_early_wakeup_flag(void)
|
|||
|
{
|
|||
|
return(WWDG->SR == WWDG_SR_EWIF);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>WWDG<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_wwdg_clear_early_wakeup_flag(void)
|
|||
|
{
|
|||
|
WWDG->SR &= (~ WWDG_SR_EWIF);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_WWDG_H */
|