STM32F0xx_看门狗(独立+窗口)配置详细过程

2019-11-08来源: 51hei关键字:STM32F0xx  看门狗  独立+窗口  配置

Ⅰ、概述


对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0看门狗的功能,F0的看门狗有两种:独立和窗口看门狗。


今天提供两种看门狗的软件工程实例,供大家下载。


两种看门狗各有各的特点,应用在不同的场合,下面将分别简单总结一下独立和窗口看门狗的功能。


Ⅱ、下载


文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。


ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。


今天的软件工程下载地址(360云盘):


IWDG独立看门狗:


https://yunpan.cn/cRfa8Qhi9g48Y  访问密码 2c3e


WWDG窗口看门狗:


https://yunpan.cn/cRfa5DvT9syUm  访问密码 7bf1


STM32F0xx的资料可以在我360云盘下载:


https://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37


Ⅲ、准备工作


对于看门狗的编程,建议大家准备F0的参考手册和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。


今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。


Ⅳ、看门狗原理


①IWDG独立看门狗


独立看门狗由内部低速时钟LSI提供计数时钟,8 位分频,12位计数,需要定期喂狗(重载数值 ReloadCounter),如果计数值减为0了,还没有重载数值,则会响应复位事件。

 

②WWDG窗口看门狗


窗口看门狗由APB1(RCC_APB1Periph_WWDG)提供计数时钟,2 位分频,7位计数,需要定期喂狗(更新计数值),如果计数值减为0x40了,还未更新计数值,则会响应复位事件。

 

Ⅴ、代码描述


今天提供两种看门狗软件工程,下面分别来总结一下,主要讲解配置的函数接口。


①IWDG独立看门狗

该函数位于main.c文件上面;


重载数值的计算请结合上面的结构框图配合函数源代码,从函数中可以看的出来,只要0.5s。


运行效果:

喂狗最大时间500ms(理论值),但内部低速时钟LSI存在误差,建议修改测试时间:小于450,大于550;


小于450ms: 正常喂狗,串口间隔打印"Running..."LED变化;


大于550ms: 喂狗超时,系统复位,串口打印"System Reset..."


②WWDG窗口看门狗

该函数位于main.c文件上面;


这里的时钟和上面IWDG的时钟不同,结合框图也看得出了经过分频之后计数的值也是计算的出来的。


运行效果:

喂狗最大时间43ms(理论值),但串口打印需要一两毫秒,建议修改测试时间:小于41,大于43;


小于41ms: 正常喂狗,串口间隔打印"Running..."LED变化;


大于43ms: 喂狗超时,系统复位,串口打印"System Reset..."


③总结一下二者的区别


1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR


2)、IWDG没有中断,WWDG有中断


3)、IWDG是12位递减的。WWDG是7位递减的


4)、IWDG只有下限,WWDG有下限和上限


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


看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。


Ⅵ、说明


或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。


本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。


今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。


Ⅶ、最后


关注微信,回复“更多内容”,将获得更多内容(如:UCOS实例等,不断更新中......)。


如果你喜欢我分享的内容,你又想了解更多相关内容,请关注文章开头的微信公众号,新内容持续更新中,后期将会有更多精彩内容出现。

关键字:STM32F0xx  看门狗  独立+窗口  配置 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479399.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32--独立看门狗使用
下一篇:基于ht1632c芯片的点阵驱动模块在STM32F103mini的应用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F42XX SPI3无输出问题
在做STM32F42XX系列STM32 SPI通讯时,SPI3的SCK引脚时钟无法看到时钟波形,工程是从SPI5的工程改的,初始化配置代码如下:SPI_HandleTypeDef SPI3_Handler;  //SPI¾ä±ú void SPI3_Init(void){    SPI3_Handler.Instance=SPI3;                         //SP3    SPI3_Handler.Init.Mode
发表于 2019-10-17
STM32F42XX SPI3无输出问题
STM32F1xx使用FIFO实现USART串口发送中断
才一位一位地把数据发出去。也就是说:DR空并不意味着发送已完成,移位寄存器空才是真正的发送完成。STM32的USART发送中断有两个:(1)“发送完成TC”中断,意思是移位寄存器已发送完成(2)"数据寄存器空TXE"中断,要注意这个中断!一上电数据寄存器DR中是没有数据的,所以,一旦开启TXE中断(当然,开全局中断也得是开着的),就会立即进入中断服务函数。这就指示我们:不要在初始化中开启TXE中断,而是要在打算发数据时才开。以下是F103C8T6的USART1初始化//串口1初始化void USART1_Init(u32 bound){ //GPIO端口设置 GPIO_InitTypeDef
发表于 2019-10-11
STM32F1xx使用FIFO实现USART串口发送中断
STM32中stm32f0xx_flash.icf文件的作用详解!
每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。1、Icf到底干了啥呢?定义了芯片存储空间的大小。定义ROM的大小和起始、结束地址。定义RAM的大小和起始、结束地址。 当然这些都是最基本的,你也可以设置以下的东西来匹配你的具体项目。链接时是否保存位块与符号设置你的启动过程设置你的堆与栈的大小和对齐方式修改编译器默认的初始化过程。关于默认库的处理等。。。 2、下面我简单介绍几个功能,详细请参考 EWARM_DevelopmentGuide2.1  
发表于 2019-09-21
STM32中stm32f0xx_flash.icf文件的作用详解!
STM32F1xx的IIC通信
一、硬件配置相关IIC的SCL和SDA都要求接上拉电阻,也即,只要主机和从机都还没开始干活,那么SCL和SDA就都是空闲的(默认高电平被称为“空闲”,也可以成为总线被“释放”),同理,SCL或SDA为low时,就称总线被占用或正忙。IIC协议要求:SCL和SDA必须都是【开漏+上拉】!简单些一下开漏和推挽的区别:参考《从硬件分析推挽输出和开漏输出详细区别》(1)推挽:写1时,GPIO被导通到VCC,写0时GPIO被导通到GND(2)开漏:写1时,GPIO被导通到悬空的漏极,写0时GPIO被导通到GND。也即IO开漏时,要想写1驱动LED,必须得接上拉电阻,要不然这个IO上写1时,是高阻态,虽然电压表测出了电压,但仍然无法驱动LED,
发表于 2019-08-08
STM32F4xx定时器
定时器的时基单元包括:计数器寄存器 (TIMx_CNT)预分频器寄存器 (TIMx_PSC)自动重载寄存器 (TIMx_ARR)重复计数器寄存器 (TIMx_RCR)有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器);当TIMx_CR1寄存器中ARPE位的置0时,preload register的内容可以随时传送到shadow register,即两者是连通的(permanently),当ARPE位的置1时,在每一次更新事件(UEV)时才把
发表于 2019-08-06
STM32F4xx定时器
stm32正点原子学习笔记(29)独立看门狗实验
;iwdg.h" 3  4  5 int main(void) 6 { 7     delay_init(); 8     LedInit(); 9     Exti_Init();10     iwdg_init(4,625);//1s,看门狗超时时间11     LED0on;12     delay_ms(200);13     14     while(1)15  
发表于 2019-11-11
stm32正点原子学习笔记(29)独立看门狗实验
小广播
何立民专栏 单片机及嵌入式宝典

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

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