【零基础学STM32】CubeMX+HAL 喂狗小教程

内容简介

IWDG独立看门狗&WWDG窗口看门狗作为特殊的两类定时器,在检测异常,定期复位有很有效果的应用,本文基于STM32F429IGT6写了一个简单的入门小教程,用其中的一些原理实现一点小功能

一点小原理

简单介绍一下两类定时器。定时器的调用方法无非预分频系数和递增递减达到某个特定值实现复位或者中断,看门狗同样,不同的是通过喂狗可以暂缓复位的到来。二者都采用递减计数。
IWDG可以在监测到异常自动复位保护,也叫硬件看门狗。可以用LSI RC 32MHZ时钟做时钟源,主要就三个寄存器影响。
关键字寄存器IWDG_KR,写入0xAAAA将重装载值写入寄存器,使重头开始计数,就是喂狗;0x5555表示可以对分频系数和重装载值进行修改;0xCCCC表示启动看门狗,在HAL库都有函数对应,了解即可
IWDG_PR预分频系数修改,IWDG_RLR重装载值修改,和普通的TIM很类似除了喂狗一步,就相当于重新复位。
喂狗时间(溢出时间)如下所示,超过这个时间定时器就会复位,正常程序跑的时候没错误就不要让它复位,算出他的周期然后选一个不大不小的时间清空定时器(喂狗)起到需要的目的
在这里插入图片描述
WWDG可以监测应用软件等一些错误时复位,也叫软件看门狗,其工作原理图大概如此
在这里插入图片描述
WWDG_CR寄存器,T7(WDGA)位置1表示启用窗口看门狗,通常用软件置1;;T[6:0]存储看门狗周期,从0x00-0x3F都可以
超时时间通过你在w[6:0]中设定的值和0x3F进行比较得到周期,用用的时钟频率乘上周期即可,公式如下
在这里插入图片描述
假设采用45Mhz的时钟源,,预分频系数设成0,此时周期为91ns 以此类推。
0x40->0x37会reset T6若1->0使MCUreset
EWI会在T[6:0]为0x40时置1,产生中断,在中断服务函数里面写喂狗就可以实现不复位,但要和你自己设定的周期做对比,在小于周期时间内喂完狗,否则还是会复位
总结下来就是:IWDG设置PRE和RLR,WWDG使能时钟PCLK1 设置PRE 窗口值w 计数值T就可以了

CubeMX配置

配置时钟源,这里我选用IWDG用内部源32M,WWDG外部在最上面一栏勾选好两个的参数,再到NVIC里面改好优先级,初始化两个小灯,一个按键,改好工程名没了

工程代码

IWDG:先点亮0灯,延时0.1s初始化看门狗,在死循环里面写如果检测到按键按下就喂狗,否则按照设定的周期反转电平,小灯呈现闪烁

int main(void)
{
   
    HAL_Init(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值