博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
独立看门狗和窗口看门狗
阅读量:6074 次
发布时间:2019-06-20

本文共 1460 字,大约阅读时间需要 4 分钟。

独立看门狗没几个寄存器。

1、IWDG_KR,写入0xcccc,启动看门狗。计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号( IWDG 复位)

2、任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中, IWDG_RLR 的值就会被重载到计数器,从而避免产生看门狗复位。写入键值 5555h 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问.
3、这个看门狗的时钟源是LSI,IWDG_PR寄存器是这个看门狗时钟的分频设置。

没有及时喂狗,单板复位后,寄存器恢复默认值,看门狗就不使能了。所谓的窗口看门狗,就是喂狗不能太慢,也不能太快,需要在一个窗口时间内喂狗。

窗口看门狗有中断源,独立看门狗没有,是不是窗口看门狗不会复位MCU,只是产生中断???

独立看门狗确实只会触发复位。而窗口看门狗可以触发中断和复位。如果在窗口看门狗的中断服务程序中重载计数值,就不会复位了。

下面来看这个模块的库函数。

void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess){  /* Check the parameters */  assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));  IWDG->KR = IWDG_WriteAccess; //写入0x5555,接触对PR和RLR的写保护}
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler){  /* Check the parameters */  assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler));  IWDG->PR = IWDG_Prescaler; //设置分频}
void IWDG_SetReload(uint16_t Reload){  /* Check the parameters */  assert_param(IS_IWDG_RELOAD(Reload));  IWDG->RLR = Reload;//设置重载值,默认是0xfff,重载值和分频系数配合,可以控制看门狗喂狗时间。}
void IWDG_ReloadCounter(void){  IWDG->KR = KR_KEY_RELOAD;//KR写入AAAA,重载,就是在清狗}
void IWDG_Enable(void){  IWDG->KR = KR_KEY_ENABLE; //看门狗使能}

一般的独立看门狗用法

void IWDG_Init(u8 prer,u16 rlr){    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消对寄存器的写保护        IWDG_SetPrescaler(prer); //写入分频值    IWDG_SetReload(rlr);   //写入重载值    IWDG_ReloadCounter(); //reload        IWDG_Enable();       //看门狗使能·}//喂狗函数·void IWDG_Feed(void){    IWDG_ReloadCounter();//reload}

 

转载于:https://www.cnblogs.com/nasduc/p/4703359.html

你可能感兴趣的文章
oracle 10g 数据库与客户端冲突导致实例创建无监听问题
查看>>
Delphi中读取文本文件的方法(实例一)
查看>>
Linux常用命令
查看>>
Android开源代码解读の使用TelephonyManager获取移动网络信息
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
iOS - Library 库
查看>>
MATLAB 读取DICOM格式文件
查看>>
spring事务管理(Transaction)
查看>>
django.contrib.auth登陆注销学习
查看>>
js执行本地exe文件的3种方法
查看>>
理解B树索引
查看>>
vi编辑器的命令集合
查看>>
Mysql利用binlog恢复数据
查看>>