独立看门狗(IWDG)由专用的40kHz的低速时钟驱动,
即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,
通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
IWDG最适合应用于那些需要看门狗作为一个在主程序之外,
能够完全独立工作,并且对时间精度要求较低的场合。
WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序
IWDG主要性能
●自由运行的递减计数器
●时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
●看门狗被激活后,则在计数器计数至0x000时产生复位
下面是使用代码:
void LSI_RCC_Configuration(void)
{
RCC_LSICmd(ENABLE); //打开LSI
while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等待直到LSI稳定
}
=================================================================================
void IWDG_Configuration(void)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); // 打开使能,因为iwdg的寄存器有写保护,必须先写入0x5555,才能操作寄存器
IWDG_SetPrescaler(IWDG_Prescaler_256); // 独立看门狗使用内部低速振荡器LSI,对LSI进行256分频
IWDG_SetReload(2500); // 设定独立看门狗计数器的计数值(0x000~0xFFF;0~4095),复位时间为16s
IWDG_ReloadCounter(); // 重载独立看门狗计数器,向寄存器写入0xAAAA,或者更新计数值
IWDG_Enable(); // 开启看门狗,向寄存器写入0xCCCC即可
}
喂狗程序直接使用 IWDG_ReloadCounter(); 函数。
其中 LSI_RCC_Configuration(); // 内部低速时钟配置 该函数可以不用,但是等低速内部时钟稳定后再开外部看门狗比较好。
现在说说如何计算外部看门狗计数器复位的时间。
先给出datasheet上的预分频和对应的时间范围:
我们来举个例子:
比如上面的代码所示,预分频256,然后计数值是2500次,则外部看门狗计数器复位时间为16秒。
首先LSI是40KHz,这里不考虑其上下浮动的情况。
- 40000Hz / 256 = 156.25Hz 这里40KHz就是40000Hz进行256分频后,计数器的频率为156.25Hz;
- 1 / 156.25Hz = 0.0064s 156.25Hz换算成时间就是0.0064秒,即为每次计数用时0.0064秒;
- 0.0064s * 2500 = 16s 则2500次计数用时16秒,16秒后计数初值被减到零,触发复位,被狗咬到。
如何测试:
stm32 的速率比较高,如果用LED作测试可能无法看到他的复位效果。
所以还是用仿真器比较好用,下面是一个示意:
关键字:STM32 外部开门狗 iwdg
引用地址:
STM32 之 外部开门狗(iwdg)
推荐阅读最新更新时间:2024-03-16 15:13
关于STM32开发工具之STM Studio调试和诊断工具讲解
STM Studio这个工具出来很久了,可能很多人都没听说过。之前没写过,今天就写点关于STM Studio的内容。 1写在前面 针对 STM32 软件的开发工具有很多,从开篇图片也能看到,不知大家用过其中哪些工具? STM32软件开发工具地址: https://www.st.com/en/development-tools/stm32-software-development-tools.html 本文就重点讲述其中的一个工具:STM Studio. 2关于STM Studio STM Studio是通过实时读取和显示变量来帮助调试和诊断STM32应用程序。 STM Studio在PC上运行,通过标准的ST-LINK开发
[单片机]
STM32的SPI
通常SPI通过4个引脚与外部器件相连: ● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 ● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。 ● SCK:串口时钟,作为主设备的输出,从设备的输入 ●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则
[单片机]
STM32学习笔记(三)------GPIO口寄存器的操作与使用
1、STM32 的每个 IO 端口都有 7 个寄存器来控制 (1)配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH (2)2 个 32 位的数据寄存器 IDR 和 ODR (3)1 个 32 位的置位/复位寄存器 BSRR (4)一个 16 位的复位寄存器 BRR (5)1 个 32 位的锁存寄存器 LCKR。 2、每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个
[单片机]
STM32时钟RCC详解(一)
1、时钟源 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL 。 ①HSI 是高速内部时钟, RC 振荡器,频率为8MHz ; ②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz ; ③LSI 是低速内部时钟,RC振荡器,频率为40KHz; ④LSE 是低速外部时钟,接频率为32.768KHz的石英晶体; ⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL的输入可以接HSI/2、HSE或者HSE/2 。PLL倍频可选择为2 – 16倍,但是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独立看门狗IWDG使用
[单片机]
STM32实战一 初识单片机
一直用PLC搞智能控制,最近研发新产品,因为控制点太多,想改用单片机,一阵某度之后,选用STM32,功能足够。开始想自己设计电路,很久没有Altium了,水平本来也不高,放弃了。从宝宝上买了一块开发板STM32F103VET6(单片机主体),一个ST-LINK仿真器(下载和调试程序),一些杜邦线(各种公母头),一些发光管(实际没有用上),开始奇妙的单片机旅程。 与客服联系,要了好多资料,客服不是很专业,不能回答技术问题,简单的安装和使用还行,专业问题要在工作时间找技术支持。一共有3G多的资料,首先安装驱动和软件。 ST-LINK+V2++WIN10+驱动.zip 这是WIN10的驱动。首先安装这个。 mdk472
[单片机]
STM32 SDIO详解
1、SDIO简介 SDIO,全称:Secure Digital Input and Output,即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、照相机等。 SDIO和SD卡规范间的一个重要区别是增加了低速标准。低速卡的目标应用是以最小的硬件开支支持低速I/O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接收器等应用。 STM32的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SDI/O卡和CE-ATA设备。 SDIO框图 复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置) 如果一个多媒体卡
[单片机]
STM32 FreeRTOS 串口队列接收
要使用队列,必须首先建立队列,建立队列后,在任务中检测队列中是否有数据,若有数据,则进行处理。 xQueueHandle xQueueRx; static void vOnCommunicationTask(void *pvParameters) { portCHAR cChar; xQueueRx = xQueueCreate(20, sizeof(u8));/*创建一个深度为20的队列*/ while(1) { if(xQueueReceive(xQueueRx, &cChar, 10/portTICK_RATE_MS)==pdTRUE) /*队列中有数据*/ { printf(
[单片机]
基于STM32的远程温控系统设计
温度控制是工业控制的主要对象之一,常用的温控数学模型是一阶惯性加上纯滞后环节,但其随着加热对象和环境条件的不同,会存在着较大的差异。因为温控对象这种较为普遍的含有纯滞后环节的特点,容易引起系统超调和持续的振荡,温度控制对象的参数会发生幅度较大的变化。因此无法采用传统的控制方法(如常规的PID控制)对温度进行有效的控制,而智能控制不需要对象的精确数学模型就可以对系统实施控制 。温度控制多采用由单片机系统来实现温度控制,其缺点是远程控制系统复杂,可靠性差,特别是当控制点较多、距离较远时,采取总线方式的通讯出错概率较高,影响到温度的控制精度 。 目前,多家厂商(如日本导电、岛通)均推出精度可达0.1级的基于PID算法的智能型温控仪
[工业控制]