一个菜鸟的STM32寄存器学习笔记6_独立看门狗IWDG.pdfVIP

一个菜鸟的STM32寄存器学习笔记6_独立看门狗IWDG.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个菜鸟的STM32寄存器学习笔记6_独立看门狗IWDG

STM32 有两个看门狗一个是独立看门狗 IWDG 还有一个是窗口看门狗WWDG 。这两者之间 的区别主要是: 1. 独立看门狗的时钟和主时钟是分离的,使用的是内部的低速时钟,所以时 钟是不准确的,但是是和主时钟分离的,当主时钟发生错误,独立看门狗 还是能工作的。而窗口看门狗是用的APB1 的时钟,APB1 用的是主时钟。 说以主时钟会影响到窗口看门狗的工作。 2. 独立看门狗在计数接收之前喂狗就可以。窗口看门狗要在一个时间范围内 喂狗,早点晚点都不可以。 这里主要介绍独立看门狗 看门狗的作用就是在程序中加入一些喂狗语句,当程序在哪里死掉或者跑飞没 有及时的喂狗。看门狗就会让CPU 重启。独立看门狗就是这个功能, 配置方法如下: 1.对IWDG-KR 写入0x5555 解除对PR 和RLR 寄存器的锁定使这两个寄 存器可以写入数据 2 .在PR 中写入预分频值 3 .在RLR 中写入计数的初值 4 .使能IWDG 功能 5 .在程序相应位置插入喂狗程序 详细说明: 第一步 写入解锁语句 根据手册要对PR 和RLR 进行访问就需要先对KR 写入0X5555 IWDG-KR=0X5555; 第二步 设置预分频值和重装载初值 这里只有3 位有效 这个寄存器只有12 位有效 从中午参考手册中可以看到时钟进来之后通过分频器进行分频然后给计数器提供时钟。 所以可以得出分频系数越大,计数器走的就越慢,相同的初值值减到0 的时间就越长。 手册上给了个根据需要的时间来选择分频系数的参考表格 在 《STM32 不完全手册》上有一个公式 例如看门狗的复位时间是2 秒那我们从上表可以看出公式中的prer 最小可以是3 然后就可 以列出公式 2000=( (4*2^3 )*rlr)/40 解出重装载的初值就是2500 换成16 进制就是9C4 就。我们就可以给PR 和RLR 中填入数值 了 IWDG-PR=3; IWDG-RLR=0x9C4; 第三步 开启看门狗 只要给KR 寄存器写入0XCCCC ;就可以开启看门狗 IWDG-KR=0XCCCC; 第四步 在程序中插入喂狗语句 IWDG-KR=0XAAAA; 这里可以在有循环的地方,在延时函数里加上一句这个喂狗程序。 到这里独立看门狗就结束了。下面是我看了 《不完全手册》写的一个程序。功能是通过按键 中断喂狗。只要不喂狗程序就会重启。 #include stm32f10x.h void NVIC_Init(void) { SCB-AIRCR=0x05FAF8FF; SCB-AIRCR|=0X05FA0400;//优先级分组 | 组0:7 | 组1:6 | 组2:5 | 组3:4 | 组4:3| /******************外部中断**********************/ NVIC-ISER[0]|=16;//外部中断线0 使能 NVIC-ISER[0]|=17;//外部中断线1 使能 NVIC-IP[7]=0x50;//外部中断线0 优先级:抢占2,子1 NVIC-IP[7]=0X30;//外部中断线1 优先级:抢占1,子1 /****************** 串口1**************************/ NVIC-ISER[1]|=15;//使能串口1 中断 NVIC-IP[37]=0X30;// 串口中断优先级抢占1,子1 } void LED_Init(void) { RCC-APB2ENR|=14;//IOPC 设为1 复位(GPIOA 是2,B 是3,C 是4 以此

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档