本文使用STM32 STLink Utility和STM32CUBELDE
1.手动添加库文件
由于使用硬件看门狗,在STM32CUBELDE内的图形界面设置时不使能看门狗。
由于STM32CUBELDE图形界面设置时未使能看门狗,因此不会自动包含库文件(与工程设置相关),需要手动添加相关文件。
我的文件是从使用看门狗的工程里拷贝出来的,放到我们要使用的工程相应的文件夹下。以STM32G0系列为例,文件包含stm32g0xx_hal_iwdg.h和stm32g0xx_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。
然后点击顶部菜单栏的Target->Automatic Mode,在弹出的窗口中选择要下载的文件,然后点击configure按钮
在弹出的窗口中将WDG_SW的勾选去掉(0代表使用硬看门狗, 1代表使用软件看门狗),如下图
设置完成后点击“Apply”按钮关闭该窗口,再点击“Start”开始下载程序,下载完成后点击“stop”按钮(有些设置需要重启才能运行)。(本文旨在记录硬件看门狗的使用,因此未详细介绍STM32 STLink Utility的使用)