【实验四】独立看门狗实验

发布者:纸扇轻摇最新更新时间:2017-09-26 来源: eefocus关键字:独立看门狗  STM32 手机看文章 扫描二维码
随时随地手机看文章

一、实验目的

1)了解独立看门狗的;

2)学会使用独立看门狗;

3)通过WK_UP来喂狗,然后通过DS0提示复位状态。


二、STM32独立看门狗简介

单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环, 看门狗电路就是为了避免这种情况的发生。 看门狗的作用就是在一定时间内(通过定时计数器实现)

 没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。

STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确

的 40Khz,而是在 30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 40Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以

接受的。


涉及的寄存器有:键寄存器IWDG_KR、预分频器IWDG_PR、重装载寄存器IWDG_RLR、状态寄存器|IWDG_SR。

功能描述:

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

(IWDG_RESET)。无论何时,只要键寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新加载到计数器中从而避免产生看门狗复位 。



IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR 寄存器中写入 0x5555。 将其他值写入这个寄存器将会打乱操作顺

序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。

还有两个寄存器,一个预分频寄存器( IWDG_PR),该寄存器用来设置看门狗时钟的分频系数。 另一个重装载寄存器。该寄存器用来保存重装载到计数器中的值。该

寄存器也是一个 32位寄存器,但是只有低 12 位是有效的。

配置步骤:

1) 取消寄存器写保护( 向 IWDG_KR 写入 0X5555)
2) 设置独立看门狗的预分频系数和重装载值
3) 重载计数值喂狗( 向 IWDG_KR 写入 0XAAAA)
4)  启动看门狗(向 IWDG_KR 写入 0XCCCC)

IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 

三、硬件设计


LED灯、按键、独立看门狗


四、软件设计

独立看门狗配置:


  1. void IWDG_Init(u8 prer,u16 rlr)   

  2. {     

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

  4.       

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

  6.       

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

  8.       

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

  10.       

  11.     IWDG_Enable();  //使能IWDG  

  12. }  


[cpp] view plain copy

  1. //喂独立看门狗  

  2. void IWDG_Feed(void)  

  3. {     

  4.     IWDG_ReloadCounter();//reload                                            

  5. }  


五、实验结果


成功!


关键字:独立看门狗  STM32 引用地址:【实验四】独立看门狗实验

上一篇:【实验五】窗口看门狗实验
下一篇:【实验三】外部中断实验

推荐阅读最新更新时间:2024-03-16 15:38

STM32超值系列探索套件为低成本设计项目带来32位的设计优势
意法半导体最近发布了STM32F030超值系列微控制器探索套件(Discovery Kit)。STM32F030于今年7月发布,拥有32位的性能,而价格仅为32美分,是该产品的最大亮点。 STM32F0308探索套件是是一个价格亲民而又简单易用的开发工具套件,让设计人员能够快速评估STM32F030超值系列微控制器的功能,并迅速启动开发项目。该套件在出厂前已经过配置,设计人员可以直接使用。通过USB端口供电或使用单独的电源,套件上上有扩展排针,可快速连接微控制器的全部I/O引脚。STM32F030R8T6微控制器采用64引脚封装,内置64KB闪存和8KB RAM。 STM32F030超值系列微控制器让低端嵌入式设计使用
[单片机]
STM32开发笔记82: 使用C++语言控制LED闪烁
单片机型号:STM32L053R8T6 本文介绍应用C++语言控制LED闪烁的方法。 先看电路图,单片机PB12引脚控制LED的亮灭,当PB12引脚给出低电平LED亮,当PB12引脚给出高电平LED灭。 步骤如下: 1、打开hal.h文件,建立CLed类,其从CIO_Output_OST_High类继承,CIO_Output_OST_High类为引脚输出类,OST是指其具有3个成员函数,分别为Open(打开操作),Shut(关闭操作)和Turn(翻转操作),High的意思是指其上电为高电平。 同样还有CIO_Output_OST_Low类,其上电为低电平。 class CLed:public CIO_Out
[单片机]
<font color='red'>STM32</font>开发笔记82: 使用C++语言控制LED闪烁
STM32基础实验3(串口通信)
一、实验原理 简单串口通信实例 1、串口设置的一般步骤可以总结为如下几个步骤: 1) 串口时钟使能,GPIO时钟使能 2) 串口复位 3) GPIO端口模式设置 4) 串口参数初始化 5) 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) 6) 使能串口 7) 编写中断处理函数 2、具体函数实现 1)串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); //①串口时钟使能,GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOA时钟使能 RCC_APB2PeriphC
[单片机]
<font color='red'>STM32</font>基础实验3(串口通信)
ucOS学习笔记(5)——一步一步移植ucOS到STM32
这两天看了下keil的编译连接相关文档得到以下一些信息: 1.关于AREA--AREA是arm汇编中的段标志,它代表一个段的开始。所谓段是指一个独立的,被命名的,不可分割一组代码或者数据,一个单独的代码段是一个应用功能的最小单元。原文如下 sections are independent, named, indivisible seqnces of code or data. A single code section is the minimum required to prod? an application 。 2.关于ENTRY--ENDTRY英文原意是入口的意思,在汇编语言中它代表了一个代码段中被执行的第一条指令的位置。如
[单片机]
STM32开发环境(MDK)搭建及第一个项目工程
一、开发环境搭建 1.1 下载IDE 目前STM32开发常用的IDE有IAR、MDK等,这里我挑选MDK。如果你是IAR的爱好者,那么这篇文章可能不适合你。 MDK官方下载地址,目前最新版本是5.26。 官网下载页面入口: 下载需要填写个人信息: 点击下载即可: 从官网下载会比较慢,为了方便大家下载,有需要的同学可以到我的网盘上获取。 1.2 IDE安装 可以配置安装路径。默认安装在C盘根目录下。 填写用户信息。随便写,不影响使用。 一路Next,最后点击Finish。 弹出一个包安装的界面。如果你要开发的芯片MDK不支持,需要通过这个Pack Installer去安装相应的包,这里先关闭忽略掉。
[单片机]
<font color='red'>STM32</font>开发环境(MDK)搭建及第一个项目工程
【菜鸟入门】stm32 之 实时时钟
经过这么10天的瞎搞,我的库已经初具规模了,于是,不用每次都把所有的文件copy过去,直接在Option里面把path给加上就ok了。 RTC的时钟配置,RTC的时间寄存器是2个32位的寄存器,无非就是一个计数器,大概可以这样理解吧,我们先看看时钟吧 RTC的时钟可以从这3路来,我们需要PTCSEL寄存器来进行设置, 上面这个图是摘自李想老师的课件里面的,我觉得这个是做的相对好的! 位了保证RTC正常工作,我们需要在系统断电时,RTC不受影响,当然我们一般都需要接一个Battery,作为rtc的后备电源,这里设计到电源管理,我们先来看看电源管理里面关于rtc的 只要我们把第八位置1我们就可以对其进行正常供电,我
[单片机]
【菜鸟入门】<font color='red'>stm32</font> 之 实时时钟
STM32单片机 GPIO寄存器
每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个是只写作输出寄存器,一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。常用的IO端口寄存器只有四个:CRH,CRL,IDR,ODR。 数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。每个I/O端
[单片机]
stm32串口的配置过程
一 配置串口用到的IO口:①Rx浮空输入②Tx复用推挽输出 注意:具体配置如下 //GPIOA.9/10用于串口通信 //设定GPIOA.9(USART.Tx)为复用推挽输出 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); //设定GPIOA.10(USART.Rx)为浮空输入 GPIO_InitStructure.GPIO_
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved