四步走
HC32F460有两个看门狗:SWDT和WDT。
1、SWDT使用的是内部专用RC时钟源,频率为10KHz,精度低,不受外部晶振和PLL的影响,可靠性较高
2、WDT使用的是系统时钟PCLK3,精度高,但如果晶振或PLL故障,看门狗会停止计数。
以下以SWDT看门狗应用举例:
1)SWDT是16位递减计数器,
2)计数值只能选择:256、4096、16384、65536这几种,不能任意设置。
3)时钟分频可选 :1、16、32、64、128、256、4096。
4)看门狗复位时间(秒)=分频 * 计数值 / 10K
第一步:工程里边添加2个库文件
没有"hc32f460_icg.h","hc32f460_icg.c"需添加,配置看门狗需要用到。
第二步:ddl_config.h文件里边开启项
第三步:打开看门狗、配置看门狗定时时间
/**
*******************************************************************************
** \brief SWDT hardware start configuration
******************************************************************************/
/*!< Enable or disable SWDT hardware start */
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_ON)
/*!< SWDT register config */
#define ICG0_SWDT_AUTS (SWDT_AUTO_START_AFTER_RESET) //65536*1/10 000=6.5536s
#define ICG0_SWDT_ITS (SWDT_RESET_REQUEST) /* 触发复位*/
#define ICG0_SWDT_PERI (SWDT_COUNT_UNDERFLOW_CYCLE_65536) /* 时钟周期数 */
#define ICG0_SWDT_CKS (SWDT_COUNT_SWDTCLK_DIV1) /* 时钟分频 */
#define ICG0_SWDT_WDPT (SWDT_0To100PCT) /* 刷新允许区域 0-100%*/
#define ICG0_SWDT_SLTPOFF (WDT_SPECIAL_MODE_COUNT_CONTINUE) /*休眠状态下仍然计数 */
/*!< SWDT register config value */
#if ICG0_SWDT_HARDWARE_START == ICG_FUNCTION_ON
#define ICG0_SWDT_REG_CONFIG (ICG0_SWDT_AUTS | ICG0_SWDT_ITS | ICG0_SWDT_PERI | \
ICG0_SWDT_CKS | ICG0_SWDT_WDPT | ICG0_SWDT_SLTPOFF)
#else
#define ICG0_SWDT_REG_CONFIG ((uint16_t)0xFFFF)
#endif
/**
以上代码配置的T=65536*1/10 000=6.5536s
第四步:调用定时刷新看门狗的函数
SWDT_RefreshCounter();