STM32独立看门狗IWDG

发布者:pi26最新更新时间:2024-10-15 来源: cnblogs关键字:STM32  独立看门狗  IWDG 手机看文章 扫描二维码
随时随地手机看文章

独立看门狗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 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。可通过
IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,
通过以下方式喂狗 :
/* Reload IWDG counter */
IWDG_ReloadCounter();
3. 1.25KHz 即每周期 为0.8ms
    共计时 350 个周期,即350*0.8ms=280ms
   看门狗定时时限= IWDG_SetReload()的值 / 看门狗时钟频率
   看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数

 

二,窗口看门狗

STM32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一时产生看门狗复位:
  
  1)当计数器的数值从0x40减到0x3F时
  
  2)当刷新看门狗时计数器的数值大于某一设定数值时,此设定数值在WWDG_CFR寄存器定义
  
  对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。


关键字:STM32  独立看门狗  IWDG 引用地址:STM32独立看门狗IWDG

上一篇:STM32多机通信
下一篇:STM32-----NVIC

推荐阅读最新更新时间:2024-11-06 16:59

STM32读取MPU6050模块的原始数据
在很多应用领域,加速度传感器和陀螺仪传感器都必不可少,MPU6050既简单又经济小巧,很适合做一些要求不高的开发。 1、MPU6050是6轴运动处理组件,包括3轴加速度和3轴陀螺仪 2、MPU6050为IIC接口,简单方便 3、加速度传感器即力传感器,检测上下左右前后都收到多少力的作用,然后计算角度 4、陀螺仪即角速度传感器,若以X为轴心,在1秒的时间里转动的90度,那么X轴上的角速度就是90度/秒 5、3个加速度传感器和3个陀螺仪传感器每轴一个16位ADC,输出数据为2^16,即-32768~+32768 MPU6050为寄存器控制,读取其中寄存器数据即可,若要了解具体寄存器请参看数据手册
[单片机]
stm32怎么读取串口发来的指令
读取串口发来的指令是嵌入式系统中一项常见的任务,特别是在与外部设备进行通信时。在STM32系列微控制器中,提供了多个串口接口(USART、UART等),可以用于读取和处理串口接收到的数据。下面将详细介绍使用STM32读取串口指令的步骤。 初始化串口:在开始读取串口指令之前,首先需要初始化串口接口。这包括设置串口的波特率、数据位长度、校验位和停止位等。可以使用STM32提供的HAL库函数来完成串口的初始化。例如,可以使用HAL_UART_Init()函数来初始化UART串口。 定义接收缓冲区:为了存储串口接收到的数据,需要定义一个接收缓冲区。缓冲区的大小应根据实际需求确定,一般建议设置为足够大以容纳预期的命令或数据。 设置中断
[单片机]
STM32停止模式唤醒不恢复时钟的后果
关于STM32的低功耗详细解析请在 STM32低功耗模式解读 中查看,在里面讲到当STM32在停止模式时,芯片1.8V区域时钟别关闭,HSI,HSE时钟也被关闭,当某个使能的中断或事件发生后,STM32从停止模式退出,此时STM32默认的时钟为HSI,因此若要让STM32回到运行模式并正常工作一段时间,必须要注意STM32的时钟问题,按照实际情况选择是否将系统时钟恢复到停止模式前的时钟配置。 测试采用芯片为stm32fo30,HSI时钟频率为8M,系统频率为48M。PLL倍频为12,输入为HSI/2。 测试一LED点亮时间的影响 采用systick定时器定时,按键按下后LED点亮,定时器开始5s定时。定时到后LED熄灭。 正
[单片机]
STM32 ADC应用要注意的几点问题
所有的STM32芯片中都带有逐次逼近型ADC模块,关于它的应用非常广泛和频繁。不过,应用过程中时常也会遇到些问题,这尽力小结下,与大家分享出来算作一些提醒。 1、Vdda没有供电或没有正常供电;STM32系列众多,该参数不可一概而论,细节请参考各个芯片数据手册。 2、采样电阻取值不合适,跟采样时间不匹配,经常表现为输入电阻过大、配置的采样时间偏短。实际设计时可以参考下STM32官方各系列评估板的相关电路。另外可以参考ST官方的应用笔记AN2834。关于ADC 应用其它的应用笔记,可以去WWW.STMCU.COM.CN搜索ADC即可。 3、ADC上电开启到稳定需要一段时间,即Tstab,该参数在数据手册里有介绍。在
[单片机]
<font color='red'>STM32</font> ADC应用要注意的几点问题
STM32 PA15 设置成下拉输入却总是高电平
原因:STM32上电时默认打开JTAG调试功能。 解决办法: 打开复用时钟,禁止JTAG功能。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 改变指定管脚的映射完全禁用(JTAG+SW-DP) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);改变指定管脚的映射,JTAG-DP 禁用 + SW-DP 使能 这之后PA15就是普通IO口了。
[单片机]
stm32发送16进制的数组总结
关于STM32如何串口输出16进制的数值,然后在串口调试助手上显示,很多人是用printf(“%02x”,A)语句,但是在串口调试助手上显示的是ACSII码,不是我们要的HEX数据,在这里我们用另外一种方法来在这件事情。 直接用寄存器来做,下面看代码: USART_SendData(USART1,0x00) ; USART_SendData(USART1,0x01) ; USART_SendData(USART1,0x02) ; 这样通过上位机收到的只是02并不是00 01 02 因为数据还来不及发送,数据就被后面来的数据覆盖了,所以收到的数据是02,不是00 01 02 USART_SendData(USA
[单片机]
Stm32_调试出现 Error:Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed- Cortex-M3 出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HWreset/sysresetReq/Vectreset)默认是AutoDetect,改成SysResetReq即可。 2.Jtag模式下,主要是芯片大小选错。Flash- Configure Falsh Tools配置窗口,切换到“Utilities 页,按“Setting 按钮进入“Flash download setup 配置窗口,在“Flash download setup 配置窗口点击“Add”按钮,在“Add Flash Program
[单片机]
Stm32_调试出现 Error:Flash Download Failed-
STM32 波形
只有给外设开启了时钟, 才能操作和控制外设。 // 产生三角波 在上述代码基础上加入下面代码,其中部分代码替代 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Period = 0xF; TIM_TimeBaseStructure.TIM_Prescaler = 0xF; TIM_TimeBaseSt
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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