华大HC32F4A0看门狗配置

本文详细介绍了华大HC32F4A0微控制器中的看门狗配置,包括专用看门狗SWDT和通用看门狗WDT。重点讲述了SWDT的启动步骤,如在ddl_config.h和hc32f4a0_icg.h头文件中配置宏,以及如何计算看门狗复位时间。同时强调了配置时需注意在Boot代码中设置,以及宏配置会写入到内部Flash特定地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、看门狗介绍

看门狗计数器有两个,一种是计数时钟源为专用内部 RC( SWDTLRC:10KHz)的专用
看门狗计数器( SWDT), 另一种是计数时钟源为 PCLK3 的通用看门狗计数器( WDT)。
专用看门狗和通用看门狗是 16 位递减计数器,用来监测由于外部干扰或不可预见的逻
辑条件造成的应用程序背离正常的运行而产生的软件故障。

2、启动看门狗

这里只介绍SWDT看门狗的启动方式,该看门狗由内部时钟控制,比较适合检测由于软件导致的系统跑飞,并进行复位重启。

1、ddl_config.h 头文件中开启相应的宏

#define DDL_ICG_ENABLE                              (DDL_ON)
#define DDL_SWDT_ENABLE                             (DDL_ON)

2、hc32f4a0_icg.h 头文件中配置相应的宏
SWDT是硬件启动,所以只需要配置这几个宏即可。

#define ICG0_RB_SWDT_AUTS				   (ICG_SWDT_RESET_AUTOSTART) 
#define ICG0_RB_SWDT_ITS				   (ICG_SWDT_TRIG_RESET) 		/* 触发复位*/
#define ICG0_RB_SWDT_PERI				   (ICG_SWDT_COUNTER_CYCLE_256) /* 时钟周期数 */
#define ICG0_RB_SWDT_CKS				   (ICG_SWDT_CLOCK_DIV32)       /* 时钟分频 */
#define ICG0_RB_SWDT_WDPT				   (ICG_SWDT_RANGE_0TO100PCT)   /* 刷新允许区域 0-100%*/
#define ICG0_RB_SWDT_SLTPOFF			   (ICG_SWDT_LPM_COUNT_CONTINUE) /*休眠状态下仍然计数 */

看门狗复位时间计算 = 分频 * 计数值 / 10K
上述看门狗复位时间计算: T = 256 * 32 / (10000) = 0.8192S
所以程序中需要在0.8秒以内不断的进行喂狗操作SWDT_Feed();,否则会复位重启。

3、注意事项

1、若存在boot代码,SWDT看门狗需要在boot代码中配置,若是在app代码中配置,不起作用。
2、摘抄HC32F4A0数据手册中的一段话:在这里插入图片描述
上述配置的宏会写入到内部Flash的0x400地址处,如下代码所示:

#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
const uint32_t u32ICG[] __attribute__((section(".ARM.__at_0x400"))) =
#elif defined (__GNUC__) && !defined (__CC_ARM)
const uint32_t u32ICG[] __attribute__((section(".icg_sec"))) =
#elif defined (__CC_ARM)
const uint32_t u32ICG[] __attribute__((at(0x400))) =               /* 该句起作用 */
#elif defined (__ICCARM__)
#pragma location = 0x400
__root static const uint32_t u32ICG[] =
#else
#error "unsupported compiler!!"
#endif
{
    /* ICG 0~3 */
    ICG_REG_CFG0_CONSTANT,
    ICG_REG_CFG1_CONSTANT,
    ICG_REG_CFG2_CONSTANT,
    ICG_REG_CFG3_CONSTANT,
    /* Reserved 0~3 */
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    /* Reserved 4~7 */
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    /* Reserved 8~11 */
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    /* Reserved 12~15 */
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    /* Reserved 16~19 */
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
    ICG_RESERVED_CONSTANT,
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值