proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)

继续更新学习STM32的历程,今天学习看门狗。

在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环。为了解决这个问题,产生了一种用于监测单片机程序运行状态的模块或芯片,叫做看门狗(WatchDog),而这个东西已经集成在STM32芯片内部。它能在系统跑飞的情况下将系统复位,重新执行程序。

STM32有两个看门狗,一个是窗口看门狗,由APB1时钟分频后得到的时钟驱动;另一个是独立看门狗,由专用的低速时钟(LSI)驱动,它是由内部的RC振荡器产生的,约为40KHZ,即使主时钟发生故障它仍然有效。

看门狗的原理是:当我们使能看门狗时(往键值寄存器IWDG_KR写入0xCCCC实现),12位的计数器就会从0xFFF开始递减,直到减为0,系统复位。在这个过程中,我们要不断地喂狗,才能使系统不复位。喂狗是将重装载寄存器的值赋给计数器,然后计数器从这个值开始递减。

由于预分频寄存器IWDG_PR和重装载寄存器IWDG_RLR有写保护功能,即如果不取消这个功能,不能往里面写数据。1)所以首先要往下面第一个库函数里面写0x5555,取消写保护。2)然后设置预分频系数和重装载值。3)使能看门狗。4)程序喂狗。

f58327e6f1836491738073bfd752823b.png

378a3b87ede8e038aa8b61644eded331.png

ad12a7f4d67fdd4253a4f64286ae1f0b.png

本次程序将实现一个功能:LED灯在初始化后是灭的状态,经过200mS的延时后点亮,即如果系统不断复位,则灯会一直闪烁。而当按下按键时,会实现喂狗功能,也就是将重装载值赋给计数器去递减。而计数器递减至0的时间设置为2S,也就是说如果2S内没有去按下按键(喂狗),则系统复位。如果2S内一直按按键,则LED常亮。

6ba7eb396b4de9461f48eaf49c53b1f4.png
知乎视频​www.zhihu.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值