历史上的今天
返回首页

历史上的今天

今天是:2024年10月29日(星期二)

正在发生

2019年10月29日 | STM32之独立看门狗 学习笔记

2019-10-29 来源:eefocus

一、独立看门狗概述:

             独立看门狗其实就是一个独立于主时钟的定时复位狗。一旦开启独立看门狗,它就会根据自己设定的时间不断倒数,倒数到0后就开始复位。


二、关于喂狗:

              喂狗就是让狗去吃东西,分心后,这只狗就得重新倒数。


三、stm32看门狗示例程序:

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "usart.h"

 

 

 

 

void IWDG_Init(u8 prer,u16 rlr) 

{

  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作

IWDG_SetPrescaler(prer);                      //设置IWDG预分频值:设置IWDG预分频值为64

IWDG_SetReload(rlr);                         //设置IWDG重装载值

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

IWDG_Enable();                             //使能IWDG

}

 

 

 int main(void)

 {  

   //延时函数初始化

delay_init()

   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级        

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  

   //初始化与LED连接的硬件接口

  LED_Init();

   //按键初始化                                    

KEY_Init();                                       

delay_ms(500); 

  //与分频数为64,重载值为625,溢出时间为1s                                 

IWDG_Init(4,625);  

   //点亮LED0                             

LED0=0;                            

 

 

while(1)

{

if(KEY_Scan(0)==WKUP_PRES)

{

IWDG_ReloadCounter();                 //如果WK_UP按下,则喂狗

}

}

  

 

从主程序main的第一行开始运行到下面的代码时,开启看门狗


  //与分频数为64,重载值为625,溢出时间为1s                                 

 IWDG_Init(4,625); 

  此时,键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。


所以我们会看到等一亮一灭。


 


  此时,如果检测到按键按下,那么就会运行喂狗程序:


if(KEY_Scan(0)==WKUP_PRES)

{

IWDG_ReloadCounter();                 //如果WK_UP按下,则喂狗

}

  喂狗后, 键寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新加载到计数器,也就是对应到初始化设置的计数值,我们设置的1S,那么计数器就将重1s处开始递减,如果我们持续按按键,那么计数器就会持续保持在那个值,不会倒数到0,也就不会产生复位,那么灯就会始终保持亮的状态。


从而验证了看门狗和喂狗的功能。

推荐阅读

史海拾趣

EM Devices Corporation公司的发展小趣事

在产品研发取得突破的同时,EM Devices Corporation也积极拓展市场,寻求与国际企业的合作。公司参加了多个国际电子展,展示了自己的产品和技术实力。通过与国外企业的交流与合作,公司不仅获得了更多的市场机会,还学习到了先进的生产和管理经验。这些经验为公司后续的发展奠定了坚实的基础。

Engelking Elektronik GmbH公司的发展小趣事

Engelking Elektronik GmbH公司成立于20世纪90年代初,最初只是一家小型电子产品制造商。在创始人Engelking先生的领导下,公司专注于生产高质量的电子元件和模块。随着技术的不断进步和市场的扩大,Engelking Elektronik开始将产品范围扩展到更复杂的电子系统。通过持续的研发投入和严格的质量控制,公司逐渐在电子行业中树立了专业可靠的声誉。

CET Technology公司的发展小趣事

在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。

Ecera Comtek Corp公司的发展小趣事

Ecera Comtek Corp公司成立于XX世纪初,由几位热衷于电子通信技术的工程师共同创立。初创时期,公司面临着资金短缺、技术挑战和市场竞争等多重压力。然而,创始人们凭借对技术的热情和执着,不断研发创新产品,逐渐在行业内树立了口碑。他们经常通宵达旦地工作,试验新的设计方案,努力提升产品的性能和稳定性。经过数年的努力,Ecera Comtek Corp公司终于推出了首款具有竞争力的无线通信设备,为公司的发展奠定了坚实的基础。

联捷(Elinker)公司的发展小趣事

进入21世纪,联捷(Elinker)意识到技术创新的重要性,开始加大在研发方面的投入。经过数年的努力,公司成功研发出具有自主知识产权的电子产品,并在市场上取得了良好的反响。同时,公司开始注重品牌建设,通过一系列的市场推广活动,逐渐树立了联捷(Elinker)在电子行业中的品牌形象。

Hamamatsu公司的发展小趣事

进入21世纪,联捷(Elinker)意识到技术创新的重要性,开始加大在研发方面的投入。经过数年的努力,公司成功研发出具有自主知识产权的电子产品,并在市场上取得了良好的反响。同时,公司开始注重品牌建设,通过一系列的市场推广活动,逐渐树立了联捷(Elinker)在电子行业中的品牌形象。

问答坊 | AI 解惑

linux2.6.14内核支持yaffs2文件系统吗?

如题? 是否必须给这个内核打yaffs2的补丁? 哪位大哥有yaffs2源码共享一下。 另外,从哪个内核开始能支持yaffs2而不需要再打补丁?…

查看全部问答>

【藏书阁】8051_8098 单片机原理及接口设计

目录: 第一章 单片微型计算机概述 第二章 MCS-51单片机组成和原理 第三章 MCS-51指令系统 第四章 MCS-51中断系统与定时器/计数器 第五章 8098单片机的结构原理 第六章 8098指令系统 第七章 8098中断、定时器与I/O寄存器 第八章 8098高速 ...…

查看全部问答>

计数器指令

各位高手好!          我是刚学PLC不久,实践较少,我想请教各位计数器指令如何实现计十次之后无输出状态,也就是说前十个每个都有输出。第十一个没有输出,复位以后再重新计数。谢谢…

查看全部问答>

可以STM32做GIF图片解码吗?

主要是解码时间会不会太长!~希望做过的老大能给个解码算法!!!!!!!!!…

查看全部问答>

IAP如何设定AP的其实地址?

要做一个IAP的系统,将程序分成2部分:boot和AP,boot负责引导系统和更新AP部分的程序,AP部分是实际需要程序。boot程序相当于普通程序,编译后下载到0x8000000开始的地址,中断向量表从0开始。AP的开始地址要在boot部分的后面,比如从0x80080 ...…

查看全部问答>

380转让LM3S8962和LM3S811(TI原厂评估板)

380包邮转让TI LM3S8962,另有LM3S811(100元)转让,LM3S8962板子包装是开过的,板子测试OK,只下过20来次程序,板子很新.LM3S811包装是没有开过的,崭新的TI的原板,因为自己学FPGA,没有时间钻研LM3S8962,所以想转让,本人是学生,没有诚意的勿扰 ...…

查看全部问答>

S3C6410裸机调试笔记(1)

前不久,公司买了一套real6410的开发板,在调试过程中出现了一些问题,经过查找资料和实验,不断的排查,找了问题的所在。不过声明一下,我这里没有进行系统的测试,问题的真正原因有待深入排查,至少在我这里是解决了一些问题。 开发平台:Real ...…

查看全部问答>

ad9923a icx205alCCD驱动电路

最近在做一个项目,是用fpga配置ad9923a 来驱动 ccd  ,型号是icx205al 。配置ad9923a的时序是串口方式配置,由于要配置的寄存器多达140个,每个由12位地址和28位数据总共40位组成 (不足位的补0),里面还有部分需要延时,附上时序图,有哪位 ...…

查看全部问答>

求助iar for stm8的程序和注册机

这几天整stm8程序, 以前大三学过,现在发现安装要程序版本和注册机版本对应问题,谢谢能给我发一套的大神,qq307536367…

查看全部问答>