STM32
直播中

周静

7年用户 595经验值
私信 关注
[问答]

如何去使用HC32F460看门狗

HC32F460看门狗的特点有哪些?
如何去使用HC32F460看门狗?


回帖(1)

王丽婧

2021-9-18 16:05:59
由于STM32涨价,厂家纷纷换了国产MCU,现在用华大HC32系列已经是潮流了。
用惯了STM32,突然换其它MCU,总是要踩一些坑,来看看HC32的看门狗吧。
HC32F460有两个看门狗:SWDT和WDT
SWDT使用的是内部专用RC时钟源,大约为10KHz,精度低,不受外部晶振和PLL的影响,可靠性较高
WDT使用的是系统时钟PCLK3,精度高,但如果晶振或PLL故障,看门狗会停止计数。
做为系统死机守护的看门狗,建议选用SWDT。
SWDT是16位递减计数器,
计数值只能选择:256、4096、16384、65536这几种,不能任意设置。
时钟分频可选 :1、16、32、64、128、256、4096。
看门狗复位时间(秒)=分频 * 计数值 / 10K
下面就是HC32460的特别之处了:
SWDT的初始化和启动是完全由硬件完成的。
参数配置是由一个叫ICG的特殊FLASH区域来完成。
ICG地址0x00000400 - 0x0000041F,可以看作是8个32位的只读寄存器,其中只有前2个有作用。

要启动SWDT看门狗,就要配置ICG0寄存器,ICG0的BIT[12:0]如图所示:


只要把ICG0的最低位由1改为0,SWDT就会自动启动。
关于ICG寄存器的配置方法,官方SDK已经提供了一个文件:hc32f460_icg.c和hc32f460_icg.h
修改hc32f460_icg.h的如下内容:

最后,还要记得修改ddl_config.h,打开配置开关。
#define DDL_ICG_ENABLE (DDL_ON)#define DDL_SWDT_ENABLE (DDL_ON) 至此,SWDT看门狗就会自动自动启动了,程序要运行的时候,需要定时刷新看门狗计数值,
刷新计数值使用以下函数就可以了:
SWDT_RefreshCounter();
举报

更多回帖

发帖
×
20
完善资料,
赚取积分