历史上的今天
返回首页

历史上的今天

今天是:2024年12月08日(星期日)

正在发生

2021年12月08日 | STM32F4学习笔记9——独立看门狗与窗口看门狗

2021-12-08 来源:eefocus

STM32F4xx内置俩个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备可用来检测和解决由软件错误引起的故障;当计数器大道给定的超时值触发一个中断(触发中断仅适用于窗口看门狗)或产生系统复位。


地理看门狗IWDG有用们的低速时钟LSI驱动,及时主时钟发生故障他也任然有效。窗口看门狗由APB1是中国分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。


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


IWDG主要特性与功能

·自由运行的递减计数器

·时钟由独立RC振荡器提供(可工作在停止和待机模式下)

·看门狗被激活后,则在计数器计到0x000是产生复位

IWDG功能图

在寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器寄到末尾0x000时会产生一个复位信号(IWDG_RESET)。无论何时,只要在寄存器IWDG中写入IWDG_KR中写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。


硬件看门狗

如果用户在选择字节中启用了“硬件看门狗”,在系统上电复位后,看门狗会自动开始运行;如果在计数器结束前,若软件没有向寄存器写入相应的值,则系统会产生复位。


寄存器访问保护

IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555.以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装在操作(写入0xAAAA)也会启动写保护功能。状态寄存器指示预分配寄存器跟递减计数器是否正在被更新。


调试模式

当微控制器进入调试模式时(M4核心停止),根据调试模块中的DBG_IWDG_STOP配置位状态,IWDG的计数器能够继续工作或停止。


STM32F4的IWDG库

下面是介绍如何使用看门狗驱动 :

·通过函数IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable)使能写寄存器IWDG_PR和IWDG_RLR

·通过函数IWDG_SetPrescaler()配置IWDG分频

·通过函数IWDG_SetReload配置IWDG计数器,每次重装后,计数器将这个值做递减。

·通过IWDG_Enable()来使能IWDG,当看门狗工作在软件模式时(不需要使能LSI,会有硬件自动使能)。

·定时器应该定时调用函数IWDG_ReloadCounter()防止系统复位。


分频器和计数器配置函数

void IWDG_WriteAccessCmd(unit16_t IWDG_WriteAccess)

void IWDG_SetPrescaler(unit8_t IWDG_Prescaler)

void IWDG_SetPrescaler(uint16_t Relaod)

void IWDG_ReloadCounter(void)

看门狗激活函数

void IWDG_Enable(void)使能看门狗

标志管理函数

FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG)用于检测看门狗标志


WWDG的主要特性与功能

·可编程的自由运行递减计数器

·条件复位

当递减计数器值小于0x40,若看门狗被启动则产生复位

当递减计数器在窗口外被重新装载,若看门狗被启动则产生复位

·若果启动了看门狗并允许中断,当递减计数器等于0x40是产生早起唤醒中断(EWI),他可以被用于重装载计数器避免WWD复位。


如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置1),并且7位递减计数器T【6:0]从0x40翻转到0x3f(T6位清零)时则产生一个复位。如果软件计数器大于窗口寄存器中的数值时重装载计数器将产生一个复位。

WWDG框图

应用程序在正常运行过程中必须定期的写入WWDG_CR寄存器以防止MCU发生复位。只有当计数器值小于窗口寄存器时,才能进行写操作。存储在WWDG_CR寄存器中的数值必须在0xff和0xc0之间。


启动看门狗

在系统复位后,看门狗总归是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后他不能再被关闭,除非发生复位。


控制递减计数器

递减计数器处于自由运行状态,即使看门狗被关闭递减计数器任然继续递减计数。当看门狗被启用时T6位必须被设置,以防止产生一个复位。T【5:0】位包含了看门狗复位产生之前的计数数目;复位前的延时在一个最小值和一个最大值之间变化,这是应为写入WWDG_CR是其预分频是未知的。配置WWDG_CFR中包含窗口的上限值:要避免产生复位递减计数器的值小于窗口寄存器的数值且大于0x3f时被重新装载,0描述了窗口寄存器的工作过程。另一个重装载计数器的方法是利用早期唤醒中断EWI。设置WWDG_CFR寄存器中的WEI位开启中断。当递减计数器到达0x40时,则产生次中断,相应的中断服务程序ISR可以用来加载计数器防止WWDG复位。在WWDG_SR寄存器中写0可以清楚该中断。


注意:可以用 T6 位 产生一个软件复位(设置 WDGA位为’ 1’, T6 位为’ 0’)。


看门狗中断特性

实际的复位产生前,如果需要执行专门的安全操作或者记录数据,呢么EWI中断就派上了用场。EWI终端有WWDG_CFR的EWI使能位。当地建计数器计到0x40的时候,EWI中断将产生,在设备复位前,我们可以在中断服务程序里面执行或者数据记录。


在一些应用中,EWI终端可以被用来管理软件系统检查/或系统恢复graceful degradation,而不会产生一个WWDG复位。这种情况的话,用户需要在ISR中清除中断标志并喂狗,防止产生系统复位。然后出发需要的操作。


EWI中断可以通过向寄存器WWDG_SR的EWIF位写0来清除。


调试模式

当微控制器进入调试模式(M4核心停止),根据调试中的DBG_WWDG_STOP配置位的状态,WWDG的计数器能够继续工作或停止


如何编写串口看门狗程序


STM32F4的WWDG库

WWDG计数器输入时钟是由 APB1时钟分频而来:

WWDG 计数器时钟 = PCLK1 / Prescaler

WWDG 溢出时间 = (WWDG counter clock) * (counter value)

最大最小溢出时间: @42 MHz(PCLK1): ~97.5 us / 49.9 ms

如何使用看门狗驱动

·通过函数RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE)使能窗口看门狗时钟

·通过函数WWDG_SetPrescaler()设置看门狗分频。

·设置WWDG计数器数值,通过函数WWDG_Enable()启动WWDG,情动WWDG以后,计数器的数值设置要大于0x40,防止立即产生复位

·用户可以悬着是否产生EWI中断,在此中断计数器到0x40时产生,一旦是能。系统复位时将无法将其关闭

·在阻止系统产生福诶的正常操作期间,用户需要在每个时间间隔通过函数WWDG_SetCounter()刷新计数器没刷新操作只能在计数器值小于设定窗口只时进行,窗口只通过函数WWDG_SetWindowValue()设定。


分频器,窗口刷新,计数器配置函数

void WWDG_DeInit(void)

void WWDG_SetPrescaler(uint32_t WWDG_Prescaler)

void WWDG_SetWindowValue(uint8_t WindowValue)

void WWDG_EnableIT(void)

void WWDG_SetCoounter(uint8_t Counter)

独立看门狗激活函数

void WWDG_Enable(uint8_t Counter)

中断标志管理

FlagStatus WWDG_GetFlagStatue(void)

void WWDG_CLearFlag(void)

推荐阅读

史海拾趣

FTCAP Fischer & Tausche Capacitor Group公司的发展小趣事

FTCAP Fischer & Tausche Capacitor Group公司的发展故事

故事一:德国制造的坚持

FTCAP Fischer & Tausche Capacitor Group自成立以来,始终坚守在德国本土进行电容器的生产和研发。这一决策源于公司对产品质量的不懈追求。在电子行业,德国制造以其精湛的工艺和严格的质量控制而闻名,FTCAP也不例外。通过缩短研发与生产之间的距离,FTCAP能够确保高效的生产流程和与客户的紧密协作,从而快速响应市场需求,提供高质量的产品。

故事二:多样化的产品线

FTCAP的产品线涵盖了从薄膜电容器到铝电解电容器的广泛范围,满足了不同行业对电容器的多样化需求。公司不仅生产标准规格的电容器,还根据客户的特定需求提供定制化的解决方案。这种灵活性和创新性使得FTCAP在竞争激烈的电子市场中脱颖而出,赢得了众多客户的信赖和好评。

故事三:技术创新与产品升级

近年来,FTCAP不断投入资源进行技术创新和产品升级。例如,公司推出的Enlight Energy Cap系列薄膜电容器,经过重新设计后,不仅性能更加优越,还增加了“Enlight”这一附加属性,进一步提升了产品的市场竞争力。此外,FTCAP还致力于提高电容器的能效和可靠性,以满足日益严格的环保和能效标准。

故事四:行业内的替代解决方案

凭借超过70年的电容器研发和生产经验,FTCAP在行业内建立了良好的声誉。当一些客户面临竞争对手产品无法满足其需求时,FTCAP能够提供定制化的电容器作为替代解决方案。这些定制产品不仅性能优越,而且能够完美匹配客户的设备和应用场景,帮助客户解决燃眉之急。

故事五:团队建设与企业文化

FTCAP的成功离不开其优秀的团队和独特的企业文化。公司注重员工的培训和发展,鼓励员工创新思维和团队合作。在FTCAP,员工们不仅拥有专业的技能和知识,还具备高度的责任感和使命感。他们共同努力,为公司的发展贡献自己的力量。此外,FTCAP还定期举办各种团建活动,增强员工之间的凝聚力和归属感,营造了一个和谐、积极的工作氛围。

台湾第一电阻(Firstohm)公司的发展小趣事
电冰箱门密封不严会导致冷气泄漏和能耗增加。如果发现门密封不严,首先应检查密封条是否老化或破损,如果是则应及时更换新的密封条。此外,还应注意检查门铰链是否松动或变形,如果存在问题应及时调整或更换。
EFC [Electronic Film Capacitors, Inc.]公司的发展小趣事

EFC公司始终坚持“品质至上”的原则。他们严格控制原材料采购,确保每一批材料都符合最高标准。在生产过程中,EFC采用先进的生产设备和工艺,确保产品的稳定性和可靠性。此外,公司还建立了完善的质量检测体系,对每一个出厂的产品都进行严格的检测。正是这种对品质的执着追求,让EFC的产品在市场上赢得了良好的口碑。

Altitude Technology公司的发展小趣事

在电子行业中,合作与共赢是企业发展的重要途径。Altitude Technology深知这一点,因此积极寻求与其他企业的合作机会。通过与一家知名芯片制造商建立战略合作关系,Altitude Technology获得了更先进的芯片供应和技术支持,进一步提升了产品的竞争力。同时,公司还与其他企业开展了一系列合作项目,共同推动电子行业的发展。

FERYSTER公司的发展小趣事

随着市场的不断扩大,FERYSTER公司意识到产品质量对于企业的重要性。因此,公司投入大量资金用于提升质量管理体系,引入国际先进的生产设备和检测仪器。同时,公司还加强了员工的质量意识培训,确保每一个环节都符合质量标准。这些措施的实施,使得FERYSTER公司的产品质量得到了显著提升,赢得了客户的广泛赞誉。

普芯达电子(Chipswinner)公司的发展小趣事

普芯达电子的“中国风”系列产品是公司发展历程中的一个重要里程碑。该系列产品经过严格的质量控制和品质检测,以其优异的性能和可靠的品质赢得了市场的广泛认可。通过一系列的市场推广活动,“中国风”品牌逐渐深入人心,成为国产集成电路产品的代表之一。同时,普芯达电子还通过不断创新和优化产品,满足了客户日益增长的需求,进一步巩固了市场地位。

问答坊 | AI 解惑

自制RF扫频仪

搞射频电路的朋友应该都知道扫频仪是用来做什么的。本人喜欢搞无线电制作,经常需要调整LC回路参数和滤波器带宽,为了方便调 试,制作了这个0~45MHZ的数字扫频仪,使用非常方便,放上来分享一下。扫频仪核心是AD9851,产生0~45MHZ扫频信号,把信号 ...…

查看全部问答>

通过IE浏览器控制继电器方案请教

打算做一个小产品,通过登陆IE浏览器来控制继电器开关的功能,现在单片机类型又多,网络接口芯片也多,不知道选用哪种合适,成本低点的,相对来说稳定可靠些的。我只要有个界面登陆进去,然后通过控制一下几路继电器,同时设置一下定时控制的模式就 ...…

查看全部问答>

串口调试助手发数据给单片机,为何无反映?

   尝试vb和单片机连接,结果把如下程序烧给单片机,没有反应,怀疑vb有误,改串口调试助手,发送A A,结果还是没有反应,工作指示灯也不亮,为什么?还望大侠指点 //-----------------------函数声明,变量定义----------------------- ...…

查看全部问答>

wince驱动问题请教

我想用arm的普通io口或者中断口,接受一串数字信号,把这个信号存储下来being处理,用的是arm2410 ,在wince下用evc怎么编程,怎么写这个接口的驱动程序,最这个是一点也不懂,公司非要我用这个编程,我需要看什么资料该怎么入手,请指点,不胜感激 ...…

查看全部问答>

usbkey

从事专业的cos开发工作,熟悉各种cos工作原理,愿意长期承接以下工作: 1、开发各种usb加密狗、usbkey开发。 2、开发PKI,PBOC加密锁COS,可以开发基于U盘、HID、CCID等协议的无驱cos; 3、开发各平台USB KEY驱动; 4、开发CSP、PKCS11中间件; ...…

查看全部问答>

为什么我的 int select(int nfds, fd_set Far* readfds,fd_set Far* writefds,fd_s

fd_set fdread; FD_ZERO(&fdread); u_long i=1; FD_SET(m_recv.m_hSocket,&fdread); ioctlsocket(m_recv,FIONBIO,&i); select(0,&fdread,NULL,NULL,0); 为什么我的这个函数没有立即返回,不是设置时间为0的话就会返回吗?为什么只有套接字上 ...…

查看全部问答>

智能视频监控分析:选择前端还是后端?

智能视频监控分析:选择前端还是后端?     从目前智能监控分析的使用情况来看,绝大多数采用的依旧是后端分析模式,方便排除故障,并可以有效的解决存储容量的压力,但由于是后端分析,一直需要网络传送视频信号,对网络带宽要求较高 ...…

查看全部问答>

电子书阅读器将复制手机模式,免费赠

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 近日电子书阅读器产业杂音不断,但是积极拓展消费性电子领域的公司仍然相当看好电子书市场。针对中国电子书市场,有厂商表示,中国市场仍在开发中,未来潜力所在瞄准三大区块,第一就是广大的 ...…

查看全部问答>

对stm32f的一点期待:从32768PLL出48/72MHz主频。

满足USB要求。少一个晶振虽然不少很多钱,但是空间少很多和稳定性要好很多。…

查看全部问答>

IQmath库函数的调用

                   我在使用IQMATH库的时候,能够使用temp=_IQ(0.333),得到正确结果,但是调用temp2=_IQatan2(temp)却只能得到temp2=0这一结果,请问各 ...…

查看全部问答>