本文使用STM32 STLink Utility和STM32CUBELDE

1.手动添加库文件

由于使用硬件看门狗,在STM32CUBELDE内的图形界面设置时不使能看门狗。
由于STM32CUBELDE图形界面设置时未使能看门狗,因此不会自动包含库文件(与工程设置相关),需要手动添加相关文件。
我的文件是从使用看门狗的工程里拷贝出来的,放到我们要使用的工程相应的文件夹下。以STM32G0系列为例,文件包含stm32g0xx_hal_iwdg.hstm32g0xx_hal_iwdg.c,分别位于工程文件夹里的Drivers->STM32G0XX_HAL_Driver的Inc文件夹和Src文件夹内。

2.使能看门狗的使用

仅仅添加库文件还不能在工程里面使用看门狗相关的一些宏定义,还需要在stm32g0xx_hal_conf.h文件内进行配置。此文件位于工程文件夹下的Core->Inc文件夹内。
打开文件后,搜索HAL_IWDG_MODULE_ENABLED,找到#define HAL_IWDG_MODULE_ENABLED取消注释即可。

注意:第一二步在每次使用.ioc文件生成代码后需要重新配置

3.在程序里配置硬件看门狗的喂狗时间

配置硬件看门狗的喂狗时间代码如下,大家可根据需要自行修改分频系数和重加载值。
该函数在main函数之前,SystemClock_Config();之后调用即可。

void IWDG_Configuration(void)
{
	WRITE_REG(IWDG->KR, IWDG_KEY_WRITE_ACCESS_ENABLE);	/*看门狗相关寄存器写使能*/
	WRITE_REG(IWDG->PR, IWDG_PRESCALER_128);	/*设置分频系数*/
	WRITE_REG(IWDG->RLR, 0xfff);	/*设置重加载值*/
	WRITE_REG(IWDG->KR, IWDG_KEY_RELOAD);	/*喂狗*/
	WRITE_REG(IWDG->KR, IWDG_KEY_ENABLE);	/*看门狗使能*/
}

4.在合适的地方喂狗

在需要喂狗的地方,加入WRITE_REG(IWDG->KR, IWDG_KEY_RELOAD);即可。

5.设置stm32的选项字节,打开硬件看门狗

打开STM32 STLink Utility软件,连接好下载工具后点击按钮1将硬件与STM32 STLink Utility连接,然后点击按钮2擦除全片flash。

cubemx使用看门狗功能_看门狗


然后点击顶部菜单栏的Target->Automatic Mode,在弹出的窗口中选择要下载的文件,然后点击configure按钮

cubemx使用看门狗功能_arm_02


在弹出的窗口中将WDG_SW的勾选去掉(0代表使用硬看门狗, 1代表使用软件看门狗),如下图

cubemx使用看门狗功能_stm32_03


设置完成后点击“Apply”按钮关闭该窗口,再点击“Start”开始下载程序,下载完成后点击“stop”按钮(有些设置需要重启才能运行)。(本文旨在记录硬件看门狗的使用,因此未详细介绍STM32 STLink Utility的使用)