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

STM32F4xx内置俩个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备可用来检测和解决由软件错误引起的故障;当计数器大道给定的超时值触发一个中断(触发中断仅适用于窗口看门狗)或产生系统复位。
地理看门狗IWDG有用们的低速时钟LSI驱动,及时主时钟发生故障他也任然有效。窗口看门狗由APB1是中国分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
IWDG最时候用于哪些需要一个看门狗在主程序之外能够独立工作并且对时间精度要求较低的场合,WWDG适合用于哪些要求看门狗在精确计算计时窗口起作用的应用程序。

IWDG主要特性与功能
·自由运行的递减计数器
·时钟由独立RC振荡器提供(可工作在停止和待机模式下)
·看门狗被激活后,则在计数器计到0x000是产生复位

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

硬件看门狗
如果用户在选择字节中启用了“硬件看门狗”,在系统上电复位后,看门狗会自动开始运行;如果在计数器结束前,若软件没有向寄存器写入相应的值,则系统会产生复位。
寄存器访问保护
IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555.以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装在操作(写入0
xAAAA)也会启动写保护功能。状态寄存器指示预分配寄存器跟递减计数器是否正在被更新。
调试模式
当微控制器进入调试模式时(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_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)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

基于ARM® Cortex®-M4的STM32F4 MCU系列采用了意法半导体的NVM工艺和ART Accelerator™,在高达180 MHz的工作频率下通过闪存执行时其处理性能达到225 DMIPS/608 Cor...

关键字: stm32f4 ARM

stm32f4和f1都有哪些区别?除了需要的头文件不一样,管脚配置什么的有区别么?

关键字: stm32f4 f1 比较

STM32F407VET6引脚图及中文资料

关键字: stm32f4 引脚图

关注星标公众号,不错过精彩内容素材来源|STM32早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个看门...

关键字: MCU 独立看门狗 窗口看门狗

▼更多精彩推荐,请关注我们▼早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立看门狗与窗口看...

关键字: 独立看门狗 窗口看门狗

STM32有两个看门狗,独立看门狗和窗口看门狗。其实两者的功能是类似的,只是喂狗的限制时间不同。 窗口看门狗 窗口看门狗,之所以称为窗口,是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和...

关键字: 独立看门狗 窗口看门狗 计数器 定时

stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。窗口看门狗,所以称之为窗口就是因为

关键字: STM32 库函数 操作寄存器 窗口看门狗

比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BC...

关键字: rtc stm32f4

【实验目的】输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。【实验内容】输出7路PWM信号,并用示波器测量输出。【实验原理】1、时

关键字: pwm stm32f4 tim1 信号输出

STM32F4的随机数发生器RNG,以环境噪声为种子,产生32位随机数供主机使用。【主要特性】1、产生32位随机数 2、两次转换时间间隔40PLL48CLK 3、随机数熵检测以发现不正常位,以产生稳定序列 3、可被关闭以...

关键字: stm32f4 随机数发生器
关闭
关闭