STM32入门HAL库-看门狗

目录

1. 目标

2. 背景知识

2.1 独立看门狗IWDG

2.2 系统窗口看门狗WWDG

3 代码

3.1 独立看门狗IWDG

3.2 系统窗口看门狗WWDG

附录


1. 目标

通过HAL库使用看门狗

2. 背景知识

STM32提供两类看门狗:独立看门狗IWDG,系统窗口看门狗WWDG

2.1 独立看门狗IWDG

看门狗会在计数器向下计数溢出时,会触发系统复位,而复位定时器的操作被叫做喂狗

某些地方不小心卡住了就可以通过看门狗解决,看门狗由专门的低速RC时钟驱动,不可更改频率,这样即使主时钟故障,看门狗依然能够工作

通过CubeMX查看时钟树,可以得到为32KHz

支持预分频系数,但只能为特定值

另外也可单独设置阈值,高于阈值喂狗也会产生复位

通过简单的计算,看门狗最大支持32s,对于绝大多数情况下是适用的

1 / (32K/256) * 4096

2.2 系统窗口看门狗WWDG

与独立看门狗类似,但定时更为精准,支持中断即在复位之前执行某些必要的操作,还有其他一些高级的特性

通过查阅手册,WWDG挂载在APB1外设时钟线上,通过CubeMX查看时钟树,频率为60MHz,这个值会通过一个固定的分频系数4096分频(14KHz),之后通过自己设置的分频值分频

复位条件,T为7位计数器(free-running downcounter value),W为7位窗口值(window value)

3 代码

3.1 独立看门狗IWDG

简单的测试代码

for (int i = 0 ; i < 10 ; ++i) {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
    HAL_Delay(500);
    HAL_IWDG_Refresh(&hiwdg);
}
while (1) {

}

3.2 系统窗口看门狗WWDG

简单的测试代码

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
int i = 0;
while (1) {
    HAL_WWDG_Refresh(&hwwdg);
    if (!i) {
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
        i = 1;
    }
}

附录

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值