123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- /************************************************************************************************/
- /**
- * @file ciu32f003_std_iwdg.h
- * @author MCU Ecosystem Development Team
- * @brief IWDG STD库驱动头文件。
- * 提供IWDG相关的STD库操作函数声明、数据类型以及常量的定义。
- *
- *
- **************************************************************************************************
- * @attention
- * Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
- *
- **************************************************************************************************
- */
- /* 避免头文件重复引用 */
- #ifndef CIU32F003_STD_IWDG_H
- #define CIU32F003_STD_IWDG_H
- /************************************************************************************************/
- /**
- * @addtogroup CIU32F003_STD_Driver
- * @{
- */
- /**
- * @defgroup IWDG IWDG
- * @brief 独立看门狗的STD库驱动
- * @{
- *
- */
- /************************************************************************************************/
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*------------------------------------------includes--------------------------------------------*/
- #include "ciu32f003_std_common.h"
- /*--------------------------------------------define--------------------------------------------*/
- /************************************************************************************************/
- /**
- * @defgroup IWDG_Constants IWDG Constants
- * @brief IWDG常量定义及宏定义
- * @{
- *
- */
- /************************************************************************************************/
- /* IWDG控制值定义 */
- #define IWDG_RELOAD (0x0000AAAAUL) /**< IWDG 喂狗 */
- #define IWDG_ENABLE (0x0000CCCCUL) /**< IWDG 使能 */
- #define IWDG_WRITE_ACCESS_ENABLE (0x00005555UL) /**< IWDG 写权限使能 */
- #define IWDG_WRITE_ACCESS_DISABLE (0x00000000UL) /**< IWDG 写权限关闭 */
- /* IWDG计数溢出时间定义 */
- #define IWDG_OVERFLOW_PERIOD_128 IWDG_CFG_OVP_128 /**< IWDG溢出时间为128ms */
- #define IWDG_OVERFLOW_PERIOD_256 IWDG_CFG_OVP_256 /**< IWDG溢出时间为256ms */
- #define IWDG_OVERFLOW_PERIOD_512 IWDG_CFG_OVP_512 /**< IWDG溢出时间为512ms */
- #define IWDG_OVERFLOW_PERIOD_1024 IWDG_CFG_OVP_1024 /**< IWDG溢出时间为1.024s */
- #define IWDG_OVERFLOW_PERIOD_2048 IWDG_CFG_OVP_2048 /**< IWDG溢出时间为2.048s */
- #define IWDG_OVERFLOW_PERIOD_4096 IWDG_CFG_OVP_4096 /**< IWDG溢出时间为4.096s */
- #define IWDG_OVERFLOW_PERIOD_8192 IWDG_CFG_OVP_8192 /**< IWDG溢出时间为8.192s */
- #define IWDG_OVERFLOW_PERIOD_16384 IWDG_CFG_OVP_16384 /**< IWDG溢出时间为16.384s */
- /**
- * @}
- */
- /*-------------------------------------------functions------------------------------------------*/
- /************************************************************************************************/
- /**
- * @defgroup IWDG_External_Functions IWDG External Functions
- * @brief IWDG对外函数
- * @{
- *
- */
- /************************************************************************************************/
- /**
- * @brief 启动IWDG计数
- * @note 使能IWDG后,IWDG无法停止
- * @retval 无
- */
- __STATIC_INLINE void std_iwdg_start(void)
- {
- IWDG->CR = IWDG_ENABLE;
- }
- /**
- * @brief 使能IWDG配置寄存器写权限
- * @retval 无
- */
- __STATIC_INLINE void std_iwdg_write_access_enable(void)
- {
- IWDG->CR = IWDG_WRITE_ACCESS_ENABLE;
- }
- /**
- * @brief 禁止IWDG配置寄存器写权限
- * @retval 无
- */
- __STATIC_INLINE void std_iwdg_write_access_disable(void)
- {
- IWDG->CR = IWDG_WRITE_ACCESS_DISABLE;
- }
- /**
- * @brief IWDG喂狗
- * @retval 无
- */
- __STATIC_INLINE void std_iwdg_refresh(void)
- {
- IWDG->CR = IWDG_RELOAD;
- }
- /**
- * @brief 配置溢出时间
- * @param overflow_period IWDG的溢出时间:
- * @arg IWDG_OVERFLOW_PERIOD_128
- * @arg IWDG_OVERFLOW_PERIOD_256
- * @arg IWDG_OVERFLOW_PERIOD_512
- * @arg IWDG_OVERFLOW_PERIOD_1024
- * @arg IWDG_OVERFLOW_PERIOD_2048
- * @arg IWDG_OVERFLOW_PERIOD_4096
- * @arg IWDG_OVERFLOW_PERIOD_8192
- * @arg IWDG_OVERFLOW_PERIOD_16384
- * @retval 无
- */
- __STATIC_INLINE void std_iwdg_set_overflow_period(uint32_t overflow_period)
- {
- IWDG->CFG = overflow_period;
- }
- /**
- * @brief 获取溢出时间
- * @retval uint32_t IWDG的溢出时间:
- * @arg IWDG_OVERFLOW_PERIOD_128
- * @arg IWDG_OVERFLOW_PERIOD_256
- * @arg IWDG_OVERFLOW_PERIOD_512
- * @arg IWDG_OVERFLOW_PERIOD_1024
- * @arg IWDG_OVERFLOW_PERIOD_2048
- * @arg IWDG_OVERFLOW_PERIOD_4096
- * @arg IWDG_OVERFLOW_PERIOD_8192
- * @arg IWDG_OVERFLOW_PERIOD_16384
- */
- __STATIC_INLINE uint32_t std_iwdg_get_overflow_period(void)
- {
- return(IWDG->CFG);
- }
- /**
- * @brief 获取计数值
- * @retval uint32_t IWDG的计数值
- */
- __STATIC_INLINE uint32_t std_iwdg_get_counter(void)
- {
- return(IWDG->CNT);
- }
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- /**
- * @}
- */
- /**
- * @}
- */
- #endif /* CIU32F003_STD_IWDG_H */
|