STM32技术参考手册第11章窗口看门狗(WWDG)
如何设计STM32单片机独立看门狗程序?
如何设计STM32单片机独立看门狗程序?[导读]今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
1.1独立看门狗简介看门狗定时器 (WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。
如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。
如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。
看门狗主要是用于在发生系统软件故障时,将系统复位。
也可以用于将系统从休眠或空闲模式唤醒。
STM32开发笔记WWDG和IWDG的用法
STM32 独立看门狗IWDG 与窗口看门狗WWDG2010年05月03日星期一21:54 独立看门狗Iwdg——有独立时钟(内部低速时钟LSI---40KHz),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
窗口看门狗wwdg——时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
一,独立看门狗看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数1.STM32独立看门狗IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 –0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。
STM32看门狗WWDG和IWDG的区别是什么
STM32 看门狗WWDG 和IWDG 的区别是什么STM32 有2 个看门狗:独立看门狗和窗口看门狗。
独立看门狗IWDG:独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器,主要用于监视硬件错误。
窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同。
如果系统时钟不走了,这个狗也就失去了作用了,主要用于监视软件错误。
简单的讲,看门狗就是检测系统故障的,如果因为系统故障而没有及时喂狗,则引发复位重启。
对于一般的独立看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但是这样有一个隐患,有可能程序跑乱了又跑回正常的地方,或者跑乱的程序正好执行了刷新看门狗操作,这样的情况下一按的看门狗就检测不出来故障了;但是如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗,也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行,非正常地跳过了某些程序段的情况。
单片机技术应用 复位电路
复位电路的作用是为了是系统恢复到初始状态的,单片机的复位方式也是存在好几种的:上电复位,系统复位,备份区域复位
上电复位:其产生的条件是,当系统上电、掉电,以及系统从待机模式返回时,发生电源复位。电源复位能够复位除了备份区域寄存器之外的所有寄存器的状态。
系统复位:以下任一事件发生时,均能产生一个系统复位:
电容充电时间计算:T = 1.1RC = 1.1 * 10000 * 0.0000001 = 0.0011s = 1.1ms
复位电路
STM32
内核复位与系统复位的别
本文说的内核是指处理器内核,也就是MPU(Microprocessor Unit)。比如STM32F103,其内核就是Cortex-M3内核。
1. NRST引脚上的低电平(外部复位)
2.窗口看门狗计数终止(WWDG复位)
3.独立看门狗计数终止(IWDG复位)
4.软件复位(SW复位)
5.低功耗管理复位
系统复位能够复位除时钟控制寄存器CRS中的复位标志和备份区域中的寄存器之外的所有寄存器。
备份区域复位:对于备份区域的复位,一种是在软件复位的时候设定备份区域控制寄存器中的对应位产生的;另一种是当电源和电池都掉电又重新上电时产生的。
平常我们常用的复位方式有两种,一种是NRST引脚的低电平复位,通过按键复位电路给这个引脚一个低电平,让系统完成复位,另一种大家都知道,那就是上电复位了,有时候是复位电路莫名失效了,有时是刚启动的时候,虽然用的没有按键复位电路多,不过也算是很常用的一种复位方式了。按键复位电路直接给图了,网上的讲解可能把这电路图都讲烂了,我就不费口舌了。
因此,我们常说的复位一般指的是系统复位。
而这里的系统就是包含内核和外设,也就是MCU(Microcontroller Unit),对于STM32F103来说,就是Cortex-M3内核+各种外设接口。
STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处
STM32 单片机中的独立看门狗与窗口看门狗有哪些
不同之处
1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。
32 的独立看门狗是没有中断的,而窗口看门狗可根据需要配置中断
2.关于独立看门狗和窗口看门狗的应用,手册p316 即17.1 节讲的非常清楚。
首先独立看门狗和窗口看门狗都可用来监视软件程序是否正常运行,而
具体而言,因为独立看门狗独立于系统时钟单独运行,因此其可用来监视是
否发生了硬件错误,比如说系统时钟故障,看门狗仍然能够起到重启的作
用,但是独立看门狗的计时精度比较差,更多的应用在独立系统运行之外的
对计时要求低的地方。
而窗口看门狗是由系统时钟提供的,因此其计时也会
很准确,当然其也就只能用来检测软件故障,比如硬件故障系统时钟坏了,
自身也就不动了,也就没有检测硬件故障的作用,因此窗口看门狗是用在检
测应用软件是否准确运行时使用的。
当然我们用系统情况下其实完全可以不使用32 提供的看门狗,我们自己某个任务的一个变量即实现看门狗的功能了。
3.另外注意,看门狗只是解决软件异常,独立看门狗称为硬件看门狗是其。
stm32独立看门狗操作寄存器 库函数
stm32 独立看门狗[操作寄存器+库函数]以单片机为核心的微型计算机系统中,单片机经常会受到来自外界电磁场的干扰。
造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作。
看门狗就是一种专门用于检测单片机程序运行状态的硬件结构。
stm32也是如此。
stm32 的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障时,它也仍然有效。
这里需要注意的是独立看门狗的时钟是一个内部时钟,所以不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,看门狗的时钟对时间的要求不是很精确,所以时钟有偏差可以接受。
本例直接操作寄存器实现验证独立看门狗的复位功能,设定一个800ms的喂狗时间,在主函数中实现LED闪烁,如果设定一个1s的延时,则触发独立看门狗复位,LED常亮。
库函数实现当外部中断发生(按下PA0按键),长时间不喂狗,引发独立看门狗复位时,向外用串口输出复位提示。
直接操作寄存器使用独立看门狗,需要了解一下寄存器:键值寄存器:(IWDG_KR)低16位有效的寄存器,只写寄存器,读出值恒为0x0000. 软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。
写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器。
写入0xCCCC,启动看门狗工作。
预分频寄存器:(IWDG_PR)第三位有效寄存器,用于设置看门狗的分频系数,最低为4,最高位256.通过设置PR[2:0]:位来选择计数器时钟的预分频因子。
要改变预分频因子,IWDG_SR寄存器的PVU位必须为0。
000: 预分频因子=4100: 预分频因子=64001: 预分频因子=8101: 预分频因子=128010: 预分频因子=16110: 预分频因子=256011: 预分频因子=32111: 预分频因子=256重装载寄存器:(IWDG_RLR)低12位有效,RL[11:0]。
stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么
stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。
可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms。
STM32之窗口看门狗(WWDG)
STM32之窗⼝看门狗(WWDG)题外话:本⼈感觉今年⽐去年“蛋定”了,做事更沉稳,学习更踏实(从去年开始就把考试成绩看的不重要了),不是为了学习⽽学习,⽽且做事更负责任了。
再接再厉。
前⼏天学习STM32的两条狗,先学习了宠物狗(IWDG),和其它MCU差不多,不多说了。
学到警⽝(WWDG)的时候,问题来了,没有IWDG那么好理解了,看了半天没有搞懂是怎么回事,计数器值、窗⼝值、在什么时候喂狗、什么时候产⽣中断等等,⼀头雾⽔。
经过两天的推敲,个⼈理解如下:1、有个7位递减计数器(WWDG->CR),就这个计数器和窗⼝计数器(WWDG->CFR)决定什么时候喂狗。
狗喂早了,复位——“早”体现在计数器值(tr)>窗⼝值(wr),也就是计数器值还没有减到窗⼝值以下;2、当 0x40 < 计数器值(tr) < 窗⼝值(wr) 时,这时候最适合喂狗了,也只有在这时候喂狗才合适;3、当计数器的值从0x40变到0x3F的时候,将产⽣看门狗复位;当然在要产⽣复位的前⼀段时间,如果开启了提前唤醒中断,那么就会进⼊中断,在中断函数⾥,我们需要及时喂狗,否则会产⽣复位;4、据⽹上资料介绍,在这个中断⾥⾯⼀般不进⾏喂狗,⼀般是系统去世前的“遗嘱”,⽐如存储重要的数据等。
这个就需要根据个⼈需要设计。
下⾯择取部分程序,可以根据程序说明,计算出喂狗的时间,⼤家注意推敲,欢迎交流!u8 WWDG_CNT = 0x7F;void WWDG_Init(u8 tr, u8 wr, u32 fprer){RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG时钟使能WWDG_CNT = tr & WWDG_CNT; // 初始化WWDG_CNTWWDG_SetPrescaler(fprer); // 设置IWDG预分频值WWDG_SetWindowValue(wr); // 设置窗⼝值WWDG_Enable(WWDG_CNT); // 使能看门狗, 设置 counterWWDG_ClearFlag(); // 清除提前唤醒中断标志位WWDG_NVIC_Init(); // 初始化窗⼝看门狗 NVICWWDG_EnableIT(); // 开启窗⼝看门狗中断}void WWDG_IRQHandler(void){WWDG_ClearFlag(); // 清除提前唤醒中断标志位LED1 = !LED1; // LED1 状态翻转printf("进⼊中断!\r\n");}int main(void){u8 tr, wr;delay_init();NVIC_Configuration(); // 设置NVIC中断分组2:2位抢占优先级, 2位响应优先级LED_Init();KEY_Init();uart_init(9600);LED0 = 0;delay_ms(300);WWDG_Init(0x7F, 0x5F, WWDG_Prescaler_8); // 计数器值为7f, 窗⼝寄存器值为5f, 分频数为8 while(1){LED0 = 1;wr=WWDG->CFR&0X7F; // 窗⼝值tr=WWDG->CR&0X7F; // 计数器值if(tr<wr) // 计数器值tr必须⼩于窗⼝值wr时才能喂狗,在之前喂狗则太早,会产⽣看门狗复位 {WWDG_SetCounter(WWDG_CNT);printf("正在喂狗!\r\n");}}}实践出真知!试验现象:DS0(红灯)先亮,再灭,DS1⽆变化。
STM32复位重启解决思路_By蒋
STM32在发生如下事件时,会产生系统复位:
1. NRST管脚上的低电平(外部复位)
——通过示波器查看监测该引脚,如果确实是由于该引脚电平拉低而复位,请检查复位电路。
2. 窗口看门狗计数终止(WWDG复位)
3. 独立看门狗计数终止(IWDG复位)
——程序中如果有使用看门狗,并且程序在运行中无故复位重启,则很有可能是程序跑飞了,导致没有及时喂狗而复位重启。
如果这种情况,建议先关掉看门狗,用JLINK做在线硬件调试,定位程序跑飞的代码处。
然后找程序BUG。
4. 软件复位(SW复位)
5. 低功耗管理复位
——软件复位和低功耗管理复位问题目前还没遇到。
软件复位通过设置SYSRESETREQ位为1,可实现软件复位。
在以下两种情况下可产生低功耗管理复位:
1. 在进入待机模式时产生低功耗管理复位:
通过将用户选择字节中的nRST_STDBY位置1将使能该复位。
这时,即使
执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
2. 在进入停止模式时产生低功耗管理复位:
通过将用户选择字节中的nRST_STOP位置1将使能该复位。
这时,即使
执行了进入停机模式的过程,系统将被复位而不是进入停机模式。
看门狗功能应用实训报告
一、实训背景随着微电子技术的不断发展,单片机在各个领域的应用越来越广泛。
为了保证单片机系统在运行过程中不会因为软件错误、硬件故障或电磁干扰等原因导致系统崩溃,看门狗(Watchdog Timer,WDT)功能应运而生。
看门狗是一种用于监控程序运行状态的设备,当程序因错误而无法正常工作时,看门狗会自动复位系统,从而保证系统的稳定运行。
为了提高对看门狗功能的理解和应用能力,本次实训旨在通过实际操作,掌握看门狗功能的原理、设置方法以及在实际应用中的调试技巧。
二、实训目标1. 理解看门狗功能的原理及作用。
2. 掌握STM32单片机看门狗功能的配置方法。
3. 学会使用看门狗功能防止程序跑飞和死循环。
4. 掌握看门狗功能在实际应用中的调试技巧。
三、实训内容1. 看门狗功能原理及作用看门狗是一种定时器,用于监控程序运行状态。
当程序正常运行时,需要定期对看门狗进行喂狗操作,以防止看门狗超时。
如果看门狗超时,则认为程序出现错误,看门狗会自动复位系统,使程序重新开始执行。
2. STM32单片机看门狗功能配置(1)硬件电路:在STM32单片机中,看门狗功能主要由独立看门狗(IWDG)和窗口看门狗(WWDG)实现。
IWDG使用独立的RC振荡器工作,适用于对时间精度要求不高的场合;WWDG则要求在精确的计时窗口内起作用,主要用于需要精确控制时序的应用。
(2)软件配置:在STM32CubeMX中,可以通过以下步骤配置看门狗功能:① 打开STM32CubeMX软件,选择相应的STM32单片机型号。
② 在“System Core”选项卡中,勾选“IWDG”和“WWDG”选项。
③ 在“IWDG”选项卡中,设置预分频系数、重装值等参数。
④ 在“WWDG”选项卡中,设置预分频系数、重装值、窗口值等参数。
⑤ 生成代码,并在Keil uVision中编译、下载程序。
3. 使用看门狗功能防止程序跑飞和死循环(1)程序跑飞:当程序进入死循环时,看门狗会因未进行喂狗操作而超时,系统自动复位,从而避免程序跑飞。
stm32f103中文手册
stm32f103中文手册第一章综述1.1 STM32F103系列微控制器概述1.2 STM32F103系列微控制器特性1.3 STM32F103系列微控制器产品线第二章存储器2.1 存储器映射2.2 Flash存储器2.3 系统存储器2.4 备份寄存器2.5 静态随机存取存储器(SRAM)第三章外设3.1 复位和时钟控制(RCC)3.2 独立看门狗(IWDG)3.3 窗口看门狗(WWDG)3.4 嵌套向量中断控制器(NVIC)3.5 系统定时器(SysTick)...第一章综述1.1 STM32F103系列微控制器概述STM32F103系列微控制器是基于ARM® Cortex®-M3内核的高性能、低功耗、增强型单片机。
它们提供了从64KB到512KB Flash存储器和从20KB到64KBSRAM存储器的不同容量选择。
它们还集成了丰富的外设资源,包括USB 、CAN、11个定时器、3个ADC、13个通讯接口等。
STM32F103系列微控制器采用了先进的90nmNVM工艺技术,具有出色的电源效率。
它们支持多种低功耗模式,包括停机模式、待机模式、睡眠模式和停止模式。
它们还支持动态电压调节和动态频率调节,以进一步降低功耗。
STM32F103系列微控制器具有高度灵活性和可扩展性。
它们支持多种封装类型,从36引脚到144引脚不等。
它们还支持多种内部和外部时钟源,包括高速内部振荡器(HSI)、低速内部振荡器(LSI)、高速外部振荡器(HSE)、低速外部振荡器(LSE)和相位锁定环(PLL)。
它们还支持多种外部存储器接口,包括NOR Flash、SRAM、NAND Flash、SDIO等。
1.2 STM32F103系列微控制器特性---特性 ---描述 -------:-----:---------内核 ---ARM® 32位 Cortex®-M3CPU,最高72MHz运行频率,单周期乘法和硬件除法,嵌套向量中断控制器(NVIC)和系统定时器(SysTick) -------存储器 ---64KB到512KB Flash存储器,20KB到64KBSRAM存储器,512字节备份寄存器,可选的2KB系统存储器 -------电源管理 ---1.65V到3.6V电源电压范围,7uA待机模式,36uA停机模式,动态电压调节和动态频率调节 -------外设 ---USB 2.0全速设备接口,CAN2.0B接口,11个通用定时器,3个高级定时器,3个12位ADC,2个DAC,13个通讯接口(3个USART、4个UART、2个I2C、3个SPI、1个I2S),CR C计算单元,96位唯一ID -------调试和编程 ---SWD和JTAG接口,支持串行线调试(SWD)和串行线跟踪(SWO),支持Flash编程和调试 -------封装 ---36引脚到144引脚不同封装类型 ----1.3 STM32F103系列微控制器产品线STM32F103x8/xB:中等容量增强型单片机,具有64KB或128KB Flash存储器和20KBSRAM存储器。
stm32_看门狗实验-WWDG
USART_ART_BaudRate = 115200;
USART_ART_WordLength = USART_WordLength_8b;
USART_ART_StopBits = USART_StopBits_1;
//USART2 GPIO配置
GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); //打开USART2功能复用IO
GPIO_InitStructure.GPIO_Pin = USART2_TX ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
* 按下按钮后,串口输出:The STM32 has been reset by WWDG
*********************************************************************************************************/
EXTI_Configuration();
NVIC_Configuration();
if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST)!=RESET)
{
Putstring(" The STM32 has been reset by WWDG \r\n");
USART_Init(USART2,&USART_InitStructure);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART_Cmd(USART2,ENABLE);
/* //USART1配置
窗口看门狗的作用是什么?窗口看门狗复位分析
窗口看门狗的作用是什么?窗口看门狗复位分析
一,窗口看门狗介绍独立看门狗的喂狗范围0-X(X由预分频器和重装载值决定,最大值为0xFFF)
独立看门狗相关介绍:传送门:独立看门狗
相比于独立看门狗,窗口看门狗限定了喂狗时间段(由喂狗上限和喂狗下限值限定的喂狗范围)
所以形象的称作窗口看门狗
二,为什么需要窗口看门狗独立看门狗:在0-重载值之间任意时间都可以喂狗
如果程序跑飞后又跑回正常
或者跑乱的程序正好执行了刷新看门狗
这样独立看门狗是不能检查到并复位芯片的
窗口看门狗:限制了喂狗时间
如果程序跑飞并且在限制的时间段喂狗是很困难的
从而保证了程序的正常运行
1234567891011
三,独立看门狗和窗口看门狗比较独立看门狗:
驱动:由LSI驱动,即使主时钟发生故障它仍有效
适用场景:
作为主程序之外能够完全独立工作
对时间精度要求较低
123456
窗口看门狗:
驱动:由APB1时钟分频后得到时钟驱动
适用场景:
在精确计时窗口起作用的程序。
STM32F103系列单片机最实用看门狗的详细资料概述
STM32F103系列单片机最实用看门狗的详细资料概述为什么使用看门狗事情很简单先前做的一款采集数据的产品不知道为何异常,陷入死循环然后“死机”,分析了很多次,没发现原因,但是每次重新上点后就能正常采集到数据。
后来找到了解决方法:看门狗!目的是当程序走入死循环或者硬件异常时,可以自动复位,这样就可以得到跟重新上电后差不多的效果了。
使用的平台:stm32f103系列单片机使用的烧写调试模式:Jlink SWD 模式。
使用STM32官方模板库。
ST系列单片机看门狗分为两种:1.独立看门狗,2.窗口看门狗。
独立看门狗:可参看RM(reference Manual)的Independent watchdog (IWDG)当然,只是简要查看下RM中的介绍(至于寄存器的操作,我们可以略过,因为我们使用库的开发,但是基本流程一定要了解!)。
在这里我们要抓住几个关键点:a、stm32f10x系列有两个看门狗,看门狗主要用于检测由于软件出错的问题,并触发系统自动复位,或者触发一个中断(窗口看门狗才有)。
b、独立看门狗的时钟源为LSI,尽管主时钟出错,它还是能保持激活状态。
窗口看门狗的时钟源为APB1时钟,并且可以修改分频值。
c、独立看门狗:有独立时钟(内部低速时钟LSI),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
精确度要求比较低。
d、窗口看门狗:时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
精确度要求更高。
看门狗原理简介:有某个寄存器按照时钟源不断的递减(有只狗,不断的消耗能量),当该。
STM32_RM_CH_V10_1中文参考手册
●●●●●●●●●●
●●●●●●●●●●
●
●
●
●●●●●
●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●
●
●●●●●●●●●●
●●●●●●●●●●
提示:点击上表中的章节名字可以直接跳转到对应的章节。
参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本
串 行 总 线
器 局 域 网
外 设 总 线
间 总 线 接 口
同 步 异 步 收
串 行 总 线
网
(RTC)
口
器
发
器
(BKP)
(ETH)
OTG(OTG_FS)
(I2C)
(SPI)
(bxCAN)
(USB)
(FSMC)
( WWDG)
(IWDG)
(TIMx(x=1…8))
(DAC)
(ADC)
(USART)
(GPIO)
请读者随时注意在st网站下载更新版本目录stm32f10xxx参考手册727时钟安全系统css83728rtc时钟83729看门狗时钟847210时钟输出8473rcc寄存器85731时钟控制寄存器rcccr85732时钟配置寄存器rcccfgr86733时钟中断寄存器rcccir88734apb2外设复位寄存器rccapb2rstr91735apb1外设复位寄存器rccapb1rstr92736ahb外设时钟使能寄存器rccahbenr94737apb2外设时钟使能寄存器rccapb2enr95738apb1外设时钟使能寄存器rccapb1enr97739备份域控制寄存器rccbdcr997310控制状态寄存器rcccsr1007311ahb外设时钟复位寄存器rccahbrstr1017312时钟配置寄存器2rcccfgr21017313rcc寄存器地址映像103通用和复用功能iogpio和afio10581gpio功能描述105811通用iogpio106812单独的位设置或位清除107813外部中断唤醒线107814复用功能af107815软件重新映射io复用功能107816gpio锁定机制107817输入配置107818输出配置108819复用功能配置1098110模拟输入配置1098111外设的gpio配置11082gpio寄存器描述113821端口配置低寄存器gpioxcrlxa
STM32日记IWDG与WWDG
STM32 独立看门狗IWDG 与窗口看门狗WWDG2010年05月03日星期一21:54 独立看门狗Iwdg——有独立时钟(内部低速时钟LSI---40KHz),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
窗口看门狗wwdg——时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
一,独立看门狗看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数1.STM32独立看门狗IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 –0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。
STM32单片机的独立看门狗和窗口看门狗的特点及用法解析
STM32单片机的独立看门狗和窗口看门狗的特点及用法解析1.看门狗介绍看门狗这东西虽然简单,但我相信绝大多程序员没有足够重视它。
使用看门狗保证系统正常地运行是非常有必要的。
我们在设计产品时,代码以及硬件设计缺陷或是外界电磁干扰都有可能使系统死机,如果不能正常对其进行复位,系统的可靠性将大打折扣。
看门狗分为软件看门狗和硬件看门狗两类,其原理都是使用一个独立定时器来计时,超出时间就会产生复位信号,主要区别看是否具有独立的硬件结构,如果有,就是硬件看门狗,如果是一个普通定时器实现的那么就是软件看门狗。
STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来讨论各自的特点和用法。
2.IWDG的特点以及使用IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload (t),t《0xFFF.也就是说记录的最大设定的复位时间为(1/40K)*256*0xFFF = 26.2 S。
由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。
另外,这个时钟与系统时钟并无关联,所有也不能与系统进行同步产生中断,一旦定时时间到后就会产生复位信号,系统来不及存储当前运行状态就会重启,可以在要求不高的场合使用。
3.WWDG的特点以及使用WWDG具有一个独立的7位定时器,使用系统时钟,可以产生系统中断。
其定时最时间为(1/PCLK1)* 4096)* 分频系数(最大为8)*(0x7F –0x3F)= 58ms.其复位的条件是:(1)当计数器的数值从0x40减到0x3F(2)当刷新看门狗时计数器的数值大于窗口上限值时满足任何一条都可以产生复位信号。
通常情况下设置窗口上限值为0x7F,下限值默认为0x40,计数器向下数到0x40就会产生中断,下个910us后变为0x3F就会复位系统。
STM32看门狗实验
1.分析和学习固件库 2.理解固件库的结构 3.通过 stm32f10x_iwdg.c/.h 文件,熟悉 IWDG(独立看门狗)的控制和工作原理 4.复习按键中断的使用方法
实验要求:
1.使用 LED 灯 LED1 来指示程序是否重启(IWDG) 2.使用按键 WAKEUP 来不断地喂狗,并用 LED4 灯指示
最适合应用于要求看门狗运行时,完全独立与主应用之外的项目
硬件电路分析:
这里的核心是在 STM32 内部进行,并不需要外部电路。但是考虑到指示当前状态和喂狗等操作,我们需要 2 个 IO 口,一 个用来输入喂狗信号,另外一个用来指示程序是否重启。喂狗我们采用板上的 WAKEUP 键来操作,而程序重启,则是通过 LED4 来指示的。LED4 和 WAKEUP 的连接在前面跑马灯实验已经介绍了,这里我们不再多说
/* Check the parameters */ assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess)); IWDG->KR = IWDG_WriteAccess; } 可以看出,该函数的作用就是把输入参数传递到 IWDG_KR 中去. 在 stm32f10x.h 中我们找到输入参数的定义,如下所示 #define IWDG_WriteAccess_Enable ((uint16_t)0x5555) #define IWDG_WriteAccess_Disable ((uint16_t)0x0000) #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗 的时钟并不是准确的 40Khz,而是在 30~60Khz 之间变化的一个时钟,只是我们在估算的时候,以 40Khz 的频率来计算, 看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 通过对 LSI 进行校准可获得相对精确的看门狗超时时间。有关 LSI 校准的问题,详见数据手册 LSI 时钟一节。
STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处
STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处
STM32 单片机中的独立看门狗与窗口看门狗有哪些
不同之处
1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。
32 的独立看门狗是没有中断的,而窗口看门狗可根据需要配置中断
2.关于独立看门狗和窗口看门狗的应用,手册p316 即17.1 节讲的非常清楚。
首先独立看门狗和窗口看门狗都可用来监视软件程序是否正常运行,而
具体而言,因为独立看门狗独立于系统时钟单独运行,因此其可用来监视是
否发生了硬件错误,比如说系统时钟故障,看门狗仍然能够起到重启的作
用,但是独立看门狗的计时精度比较差,更多的应用在独立系统运行之外的
对计时要求低的地方。
而窗口看门狗是由系统时钟提供的,因此其计时也会
很准确,当然其也就只能用来检测软件故障,比如硬件故障系统时钟坏了,
自身也就不动了,也就没有检测硬件故障的作用,因此窗口看门狗是用在检
测应用软件是否准确运行时使用的。
当然我们用系统情况下其实完全可以不使用32 提供的看门狗,我们自己某个任务的一个变量即实现看门狗的功能了。
3.另外注意,看门狗只是解决软件异常,独立看门狗称为硬件看门狗是其。
STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)
STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。
看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。
看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。
看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU 复位,此时本来运行的程序终止重新启动单片机(发生了故障)。
在使用了看门狗之后,在正常运行的程序中加入喂狗的程序,即采用定时器的方式每隔一段时间进行一次喂狗重置计数装载值,这样,只要程序正常运行,没有出现故障或软件错误,就会不断的定时喂狗,从而不会使计数值达到超时值产生复位。
一、独立看门狗IWDG:1、IWDG主要性能1)自由运行的递减计数器2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作)3)看门狗被激活后,则在计数器计数至0x000时产生复位2、IWDG功能描述在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。
当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。
无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。
void IWDG_ConfiguraTIon(void)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
13
12
11
10
EWI
9
WDGTB1
8
WDGTB0 WDGA 7
6
5
4
窗口看门狗(WWDG)
T[6:0]
01111111
W[6:0]
0001111111 0
3
2
1
EWIF
0
7/6/2007
在 PCLK1=36MHz 时的最小-最大超时值
(ms)
WDGTB
最小超时值
最大超时值
0
113µs
7.28ms
1
227µs
14.56ms
2
455µs
Hale Waihona Puke 29.12ms3910µs
58.25ms
7/6/2007
STM32F10x 参考手册
第一版
窗口看门狗(WWDG)
11.5
调试模式
当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态,WWDG的计数器能够继续工作或停止。详见有关调试模块的章节。
STM32F10x 参考手册
第一版
窗口看门狗(WWDG)
11 窗口看门狗(WWDG)
11.1 11.2 11.3
简介
窗口看门狗通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的 运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,此看门狗电路在 达到可编程的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器值之前, 如果递减计数器值的第7位(在控制寄存器中) 被刷新, 那么也将产生一个MCU复位。这表 明递减计数器需要在一个有限的窗口中被刷新。
7/6/2007
STM32F10x 参考手册
第一版
11.7 WWDG 寄存器映像
表11-1 WWDG寄存器映像和复位值
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
偏移 寄存器
WWDG_CR
000h
保留
复位值
004h
WWDG_CFR 复位值
保留
008h
WWDG_SR 复位值
保留
15
主要特性
● 可编程的自由运行递减计数器 ● 条件复位
─ 当递减计数器的值小于 40h,(若看门狗被启动)则产生复位。 ─ 当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。见图 11-2。
功能描述
如果看门狗被启动(WWDG_CR 寄存器中的 WDGA 位被置 1), 并且当 7 位(T[6:0])递减计 数器从 40h 翻转到 3Fh(T6 位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄 存器中的值时重新装载计数器,将产生一个复位。
WDGTB[1:0]: 时基 预分频器的时基可根据如下修改:
00: CK计时器时钟(PCLK1除以4096) 除以1 01: CK计时器时钟(PCLK1除以4096) 除以2 10: CK计时器时钟(PCLK1除以4096) 除以4 11: CK计时器时钟(PCLK1除以4096) 除以8
W[6:0]: 7位窗口值 这些位包含了用来与递减计数器进行比较用的窗口值。
15 14 13 12 11 10 9 保留
8
7
6
5
4
3
2
1
0
WDGA T6 T5 T4 T3 T2 T1 T0 rs rw rw rw rw rw rw rw
位31:8 位7 位6:0
保留。
WDGA: 激活位 此位由软件置1,但仅能由硬件在硬件复位后清0。当WDGA=1时,看门狗可以产生复位。 0:禁止看门狗 1:启用看门狗
配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免产生复位,递减计数器必须在 其值小于窗口寄存器的值并且大于 3Fh 时被重新装载,图 11-2 描述了窗口寄存器的工 作过程。 T6位可以被用来产生一个软件复位(WDGA位被置位,T6位清零)
如何编写看门狗超时程序
图 11-2 显示了装载到看门狗计数器(CNT)中的 6 位计数值和看门狗的延迟时间之间的线 性关系(以 ms 为单位)。此图可用来做为快速计算的参考而未将时间的偏差考虑在内。如 果需要更高的精度,可以使用图 11-2 提供的计算公式。
保留
15 14 13 12 11 10 9
8
7
6
5
4
3
2
1
0
保留
EWI
WDG TB1
WDG TB0
W6
W5
W4
W3
W2
W1
W0
rs rw rw rw rw rw rw rw rw rw
7/6/2007
STM32F10x 参考手册
第一版
窗口看门狗(WWDG)
位31:8 位9
位8:7 位6:0
保留。
EWI: 提前唤醒中断 此位若置1,则无论何时,当计数器值达到40h,即产生中断。 此中断只能由硬件在复位后清除。
7/6/2007
STM32F10x 参考手册
第一版
窗口看门狗(WWDG)
11.6 寄存器描述
关于在寄存器描述里面所用到的缩写,详见第 1 章。
11.6.1
控制寄存器(WWDG_CR)
地址偏移量:00h 复位值:0111 1111(7Fh)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 保留
警告:当写入 WWDG_CR 寄存器时,始终把 T6 位写 1 来避免立即产生一个复位。
图11-2 窗口看门狗时序图
计算超时的公式如下: TWWDG = TPCLK1 x 4096 x 2WDGTB x (T[5:0] + 1);
其中: TWWDG:WWDG 超时时间 TPCLK1:APB1 以 ms 为单位的时钟间隔
T[6:0]: 7位计数器(MSB至LSB) 这些位用来存储看门狗的计数器值。每个PCLK1周期(4096x2WDGTB)减1.当计数器值从40h变 为3Fh时(T6被清0),产生看门狗复位。
11.6.2
配置寄存器(WWDG_CFR)
地址偏移量:04h 复位值:0111 1111(7Fh)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
图11-1 看门狗框图
应用程序在正常的运行过程中必须每隔一定的时间间隔写 WWDG_CR 寄存器以防止 MCU 发生复位。只有当计数器值小于窗口寄存器的值时,才能进行这个写操作。这个要被储存 在 WWDG_CR 寄存器中的值必须在 FFh 和 C0h 之间: ● 启动看门狗
看门狗通常在复位后被禁止。设置 WWDG_CR 寄存器中的 WDGA 位将启动看门狗, 一旦被启动后,看门狗则不能再被关闭,除非发生复位。
11.6.3
状态寄存器(WWDG_SR)
地址偏移量:08h 复位值:0000 0000(00h)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
保留
15 14 13 12 11 10 9
8
7
6
5
4
3
2
1
0
保留
EWIF rc_w0
位31:1 位0
保留。
EWIF: 提前唤醒中断标志 当计数器值达到40h时,此位由硬件置1。它必须通过软件写“0”来清除。对此位写“1”无 效。若中断未被使能,此位也会被置1。
7/6/2007
STM32F10x 参考手册
第一版
窗口看门狗(WWDG)
注:
11.4
● 控制递减计数器 递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看 门狗被启用时,T6 位必须被设置,以防止立即产生一个复位。 T[5:0]位包含了在看门狗产生复位之前的延时增量;复位前的延时时间在一个最小值和 一个最大值之间变化,这是因为写入 WWDG_CR 寄存器时,预分频值是未知的。