历史上的今天

今天是:2024年10月05日(星期六)

正在发生

2018年10月05日 | STM32的独立开门狗怎么启用和停止

发布者:清晨微风 来源: eefocus关键字:STM32  独立开门狗  启用和停止 手机看文章 扫描二维码
随时随地手机看文章

STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。


看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。


在键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。无论何时,只要键寄存器 IWDG_KR 中被写入 0xAAAA,  IWDG_RLR 中的值就会被重新加载到计数器中从而避免产生看门狗复位  。


IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR 寄存器中写入 0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。


只要对以上三个寄存器进行相应的设置,我们就可以启动 STM32 的独立看门狗,启动过程可以按如下步骤实现(独立看门狗相关的库函数和定义分布在文件 stm32f10x_iwdg.h 和stm32f10x_iwdg.c 中) :


1)取消寄存器写保护(向 IWDG_KR 写入 0X5555)


通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器,设置 IWDG_PR 和 IWDG_RLR 的值。这在库函数中的实现函数是:


IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);


2)设置独立看门狗的预分频系数和重装载值 


设置看门狗的分频系数的函数是:


void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);  //设置 IWDG 预分频值


设置看门狗的重装载值的函数是:


void IWDG_SetReload(uint16_t Reload); //设置 IWDG 重装载值


设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间 (也就是看门狗溢出时间) ,该时间的计算方式为:


Tout=((4×2^prer)  ×rlr) /40


其中 Tout 为看门狗溢出时间(单位为 ms) ;prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值) ;


比如我们设定 prer 值为 4, rlr 值为 625,那么就可以得到 Tout=64×625/40=1000ms,这样,看门狗的溢出时间就是 1s,只要你在一秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位(当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门狗复位。


3)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA)


库函数里面重载计数值的函数是:


IWDG_ReloadCounter();   //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器


通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里面。 即实现独立看门狗的喂狗操作。


4)  启动看门狗(向 IWDG_KR 写入 0XCCCC)


库函数里面启动独立看门狗的函数是:


IWDG_Enable();   //使能 IWDG


通过这句,来启动 STM32 的看门狗。注意 IWDG 在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG,否则问题依旧,所以在这里提醒大家,如果不用 IWDG 的话,就不要去打开它,免得麻烦。


关键字:STM32  独立开门狗  启用和停止 引用地址:STM32的独立开门狗怎么启用和停止

上一篇:STM32F411RE Nucleo笔记-按键控制PWM占空比
下一篇:STM32F4 FLASH读写操作

推荐阅读

NVIC概念:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器”。简单来说,就是MCU提供、处理内部中断的模块。NVIC库函数:中断优先级:在配置NVIC之前得弄懂一个概念:中断优先级,即中断的执行顺序。中断优先级中,分为抢占式优先级(先占优先级)和响应优先级(从优先级)。抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断...
如果数字逻辑电路的频率达到或者超过45MHZ~50MHZ,而且工作在这个频率之上的电路已经占到了整个电子系统一定的份量(比如说1/3),通常就称为高频电路。高频电路设计是一个非常复杂的设计过程,其布线对整个设计至关重要!【第一招】多层板布线高频电路往往集成度较高,布线密度大,采用多层板既是布线所必须,也是降低干扰的有效手段。在PCB Layout阶段,合...
谈到医疗机器人,许多人都会起到美国Intuitive surgical公司研发的达芬奇机器人,它是世界第一款手术机器人,代表着机器人在医疗行业应用的重要里程碑。不过,达芬奇仍然是由人类控制的机器系统。随着人工智能技术的进步发展,医疗行业又发生了巨大的变化。利用机器学习的方法,可以对不同病例进行学习,再结合所有医学知识库的知识,能够快速诊断出病情...

史海拾趣

问答坊 | AI 解惑

求IRDA协议原本

最近对IRDA很感兴趣.我的手机是9@9C,只有红外,我自己做了个主板型的红外接口,速度57600kbps.但距离太搞笑了,5cm.我想做个串口转红外的,反复比较,认为让串口工作在红外协议下是最廉价的解决方案,但是两个的脉宽是不是不一样的(网站上有的都不怎么具 ...…

查看全部问答∨

红外报警

本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 希望对大家应该有用吧。。。  …

查看全部问答∨

请教:

各路高手:     微软说CETK命令行测试,编辑命令 + “-x “参数" ”  如:tux -o -d fsdtst -x5022,5027,     表示只测试5022和5027这两个case     我现在弄不明白“5022”和“5027”分别指的是什么 ...…

查看全部问答∨

413控制485

谁有413的TIMER-A控制485的例程。…

查看全部问答∨

[职场攻略]大学生怎么对待第一份工作

眼下,刚走出大学校园一个月的大学生,有的已 经顺利地走上了工作岗位,开始了自己的职业生涯;而有的还奔波于人才中心或是守候在电脑前关注网络上的招聘信息。对于毕业后的第一份工作,是满意还是失 望,或是有更多的期待?大学生如何看待自己的第 ...…

查看全部问答∨

【问TI】TI M3

TI M3的功耗如何呢?? 您认为以后的产品功耗能减少到什么程度呢 会不会让消费者大开眼界呢…

查看全部问答∨

verilog一个表达式

    Adbus = { 3{4\'b1011} }= { 4\'b1011,4\'b1011,4\'b1011}么 不是应该这样么 为什么上面是那样呢 本人初学Verilog…

查看全部问答∨

IAR版本问题,那个版本才支持9B96 C3的开发板啊!

IAR版本问题,那个版本才支持9B96  C3的开发板啊!  求给个链接,急用,在线等!…

查看全部问答∨

定时器和中断怎么关不掉啊

请问各位前辈       我想产生两相相位差90度的PWM,在中断中关掉定时器    我用了CCIE=0 ,TACCTL0 &= ~CCIE; 也不起作用 输出的波形 是同相位的 不知道为什么 请各位前辈指教     &nb ...…

查看全部问答∨

【设计工具】Xilinx FPGA的Fast Startup

Xilinx FPGA的Fast Startup 在众多当代应用中,嵌入式系统必须满足极其苛刻的时序要求。其中之一就是启动时间——即上电后电子系统进入可操作状态所需要的时间。PCI Express®产品或汽车应用中基于CAN的电子控制单元(ECU)就是具有 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved