完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在嵌入式系统中,由于MCU(微控制单元:Microcontroller Unit)的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测程序运行状态的模块,俗称“看门狗”(watchdog)
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的时候要注意清看门狗。 看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值。 STM32F10X内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。 独立看门狗(IWDG)由专用的32kHz的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。丨WDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。 键值寄存器(IWDG_KR) 预分频寄存器(IWDG_PR) 重装载寄存器(IWDG_RLR) 状态载寄存器(IWDG_SR) 简析:参照第26篇中 RCC 时钟系统框图中最下方一路 LSI RC 独立时钟就是提供给看门狗使用的,这个LSI进来之后,首先通过 IWDG_PR寄存器进行预分频,然后重新得到一个频率,然后用这个频率使 12-bit Down-counter 开始计数,每来一个时钟脉冲就减1,IWDG_RLR是重装载寄存器,这个值设置为多少计数器就从多少开始向下减开始计数,如果这个值减到0,就会产生一个复位信号,如果在减到0之前被重新装载一个新的值,就会重新开始计数,所以这里的重新装载就是**“喂狗”**,一般如果程序跑飞,就会来不及喂狗,自然而然就会产生复位信号。 看门狗超时时间(32kHz的输入时钟) 主要寄存器介绍 键值寄存器 给它一个特殊的值,就能产生特定的操作。起到一个控制作用。 所以喂狗只需向此寄存器写入 0XAAAAh,这样 IWDG_RLR的值就会自动装载、重新计数。 预分频寄存器 重装载寄存器 操作步骤 1)向IWDG_KR写入 0X5555。 通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器。设置 IWDG_PR和IWDG_RLR 的值。 这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间,该时间的计算方式为: Tout =40 Khz / ( (4*2^prer ) * rlr ) ; 当然这个值是个粗略的计算值,因为时钟不准确,所以无法得到准确的喂狗时间。 2) 向IWDG_KR 写入0XAAAA 。 通过这句,使STM32重新加载 IWDG_RLR 的值到看门狗计数器里面。也可以用该命令来喂狗。 3) 向IWDG_KR 写入0XCCCC 。 通过上面3个步骤,我们就可以启动STM32的看门狗了,使能了看门狗,在程序里面就必须间隔一定时间间喂狗,否则将导致程序复位。利用这一点,我们将通过一个 LED 灯来指示程序是否重启。 IWDG 库函数 操作范例 void IWDG_Configuration(void) { //使能对寄存器IWDG_PR和IWDG_RLR的写操作; IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //设罝IWDG预分频值 /256 ; 40K/256=156HZ(6.4ms) 5s/6.4ms=781IWDG_SetPrescaler(IWDG_Prescaler_256); IWDG_SetReload(781); 〃 设罝IWDG重装载值;要小于0xfffIWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器; IWDG_Enable(); //使能IWDG ; } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1758 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1931浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
721浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
563浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:47 , Processed in 0.636251 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号