华大HC32F4A0看门狗配置

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

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,
};
华大HC32F4A0华大基于ARM Cortex-M4内核开发的一款微控制器,支持USB功能。如果你想学习如何使用HC32F4A0的USB功能,以下是一些入门学习的步骤和建议: 1. 获取开发板:首先,你需要购买一块HC32F4A0的开发板。可以在华大官方网站上找到合适的开发板型号,并购买。 2. 下载开发工具:华大提供了一款集成开发环境(IDE),名为HBuilder。你可以在华大官方网站上下载并安装该软件。 3. 学习基础知识:在开始使用USB功能之前,建议你先学习一些基础知识,如C语言编程、嵌入式系统和微控制器的基本原理等。 4. 查阅文档:华大官方网站上有HC32F4A0的技术文档和用户手册,你可以下载并详细阅读这些文档,了解HC32F4A0的USB功能的具体实现方式和使用方法。 5. 学习示例代码:HBuilder集成开发环境中提供了一些示例代码,可以帮助你理解和学习HC32F4A0的USB功能。可以通过查看示例代码并进行实验来加深理解。 6. 参考资料:除了官方文档和示例代码,你还可以参考一些相关的书籍、教程和网络资源,以了解更多关于USB功能的知识。 7. 实践项目:尝试自己动手实践一些小项目,如通过USB与电脑进行通信、控制外部设备等。通过实际操作,你将更好地理解和掌握HC32F4A0的USB功能。 总之,学习HC32F4A0的USB功能需要一定的基础知识和实践经验。通过不断学习和实践,你将逐渐掌握该功能,并能够应用到自己的项目中。祝你学习顺利!如果你有任何具体的问题,欢迎随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值