【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用

这篇具有很好参考价值的文章主要介绍了【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

STM32 系列单片机具有强大的内置功能, 其中之一就是独立看门口 (IWDG). 看门狗定时器是一种重要的硬件设备, 用于防止系统软件故障. 在许多应用中, 看门狗定时器的使用是至关重要的, 它可以检测和解决软件错误, 提高系统的可靠性. 今天小白将带领大家深入探讨 STM32 独立看门狗 (IWDG) 的原理和应用.

【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用

什么是独立看门狗 (IWDG)

STM32 的独立看门狗 (IWDG, Independent Watch Dog) 是一个自由运行的定时器, 它可以在系统发生软件错误时产生系统复位. IWDG 由独立的低速内部振荡器 (LSI) 提供时钟, 器频率约为 40kHz. 由于 IWDG 有自己的独立时钟源, 因此即使主系统时钟失败, IWDG 仍然可以正常工作.

IWDG 的超时时间可以通过编程来设置, 范围从 1 毫秒到 32 秒. 当看门狗定时器达到预定的超时时间时, 如果没有被软件重载, 喂狗, 它就会产生系统复位.

IWDG 在系统复位后会立即启动, 即使在系统启动后的初始化阶段也无法关闭. 这是因为 IWDG 是在硬件级别实现的, 一旦启动, 就不能被停止或禁用. 这使得 IWDG 成为一种强大的工具, 可以防止软件错误导致系统无法恢复.

【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用

独立看门狗工作原理

IWDG 的工作原理相对简单. 首先, 需要通过编程设置 IWDG 的预分频器和重载值, 以确定看门狗定时器的超时时间. 预分频器的值可以是 4 到 256, 重载值的范围是 0 到 0xFFF.

一旦设置了预分频器和重载值, 就可以启动 IWDG. 启动后, IWDG 开始倒数, 每隔一定的时间 (由分频器和重载值确定) 就减 1, 直到 0. 在倒数到 0 之前, 软件需要重载 IWDG, 将其计数值重置为重载值, 从而防止产生系统复位. 如果软件没有在计数到 0 之前重载 IWDG, IWDG 就会产生系统复位.

IWDG 的重载操作通常在主程序循环中进行, 以保证系统正常运行. 如果由于软件错误, 主程序循环停止运行或运行时间超出预期 (例如死循环或程序崩溃), IWDG 就不会被重载, 从而产生系统复位.

键寄存器

键寄存器 (Key Register) 是一种特殊的硬件寄存器, 用于控制或管理硬件设备的某些功能或特性. 键寄存器通常包含一个或多个 “键值” (Key Value), 这些键值需要在机械能某些特定操作 (如修改配置, 启动或警用特征等) 时被正确地写入寄存器.

在许多硬件设备中, 键寄存器是一种重要的保护机制. 例如, STM32 单片机的独立看门狗定时器 (IWDG, Independent Watchdog) 就有一个键寄存器. 要启动或重载独立看门狗定时器, 必须先在寄存器中写入正确的键值. 这样做的目的是防止因软件错误或干扰而误操作独立看门狗定时器.

状态寄存器 (IWDG_SR)

位 31:32 保留
位 1 RVU:看门狗计数器重装载值更新 (Watchdog Counter Reload Value Update) 此位由硬件置 ‘1’ 用来指示重载值的更新正在进行中. 当在 VDD 域中的重创在更新结束后, 此位由硬件清 ‘0’ (最多需要 5 个 40kHz 的 RC 周期). 重装载值只有在 RVU 位被清 ‘0’ 后才可以更新.
位 0 PVU: 看门狗预分频值更新 (Watchdog Prescaler Value Update) 此位由硬件置 ‘1’ 用来指示预分频值的更新正在进行中. 当在 VDD 域中的预分频值更新结束后, 此位由硬件清 ‘0’ (最多需要 5 个 40kHz 的 RC 周期). 预分频值只有在 PVU 位被清 ‘0’ 后才可更新.

寄存器配置操作步骤

  1. 通过在键寄存器 (IWDG_KR) 中写入 0xCCCC 来使能 IWDG
  2. 通过在键寄存器 (IWDG_KR) 中写入 0x5555 来使能寄存器访问
  3. 通过将预分频寄器寄存器 (IWDG_PR) 编程为 0-7 中的数值来配置预分频器
  4. 对重载寄存器 (IWDG_RLP) 进行操作
  5. 等待寄存器更新 (IWDG_SR = 0x0000 0000)
  6. 刷新计数器值为 IWDG_RLR 的值 (IWDG_KR = 0xAAAA)

【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用

案例

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/WDG/wdg.h"
#include "./BSP/KEY/key.h"


int main(void)
{
    HAL_Init();                             /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */
    delay_init(72);                         /* 延时初始化 */
    usart_init(115200);                     /* 串口初始化为115200 */
    led_init();                             /* 初始化LED */
    key_init();                             /* 初始化按键 */
    delay_ms(100);                          /* 延时100ms再初始化看门狗,LED0的变化"可见" */
    iwdg_init(IWDG_PRESCALER_64, 625);      /* 预分频数为64,重载值为625,溢出时间约为1s */
    LED0(0);                                /* 点亮LED0(红灯) */

    while (1)
    {
        if (key_scan(1) == WKUP_PRES)       /* 如果WK_UP按下,则喂狗 */
        {
            iwdg_feed();                    /* 喂狗 */
        }

        delay_ms(10);
    }
}

总结

STM32 的独立看门狗 (IWDG) 可以提高系统的可靠性, 防止软件错误导致系统无法恢复. 通过 STM32 CubeMX 工具和 HAL 库, 我们可以轻松配置的使用 IWDG. 尽管 IWDG 的使用可能会增加软件的复杂性.文章来源地址https://www.toymoban.com/news/detail-514516.html

到了这里,关于【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】基础知识 第十四课 串口通信: 深入探究与应用

    在嵌入式系统中, 串口通信是一种常见的通信方式, 特别是在单片机领域. STM32 系列单片机提供了强大的串口 (UART) 功能, 可支持多种通信模式. 今天小白将带领大家深入探讨 STM32 的串口通信, 包括其基本原理, 配置方法, 中断处理及实际应用示例. 串口通信 (Serial Communication) 是一

    2024年02月15日
    浏览(10)
  • 【正点原子STM32连载】第十五章 窗口看门狗实验 摘自【正点原子】APM32F407最小系统板使用指南

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 本章介绍APM32F407窗口看门狗(WWDT)的使用,窗口看门狗与独立看门狗一样能够帮助CPU在进入错误状

    2024年02月12日
    浏览(15)
  • STM32-02-STM32基础知识

    STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片,而 Cortex M内核 使用的是 ARM v7-M架构 ,是为了替代老旧的单片机而量身定做的一个内核,具有低成本、低功耗、实时性好、中断响应快、处理效率高等特点。 架构 、 内核 、 芯片 的关系: 架构 : (ARMv7-M)

    2024年02月03日
    浏览(13)
  • 【STM32】基础知识 第二课 初识 STM32

    ARM 公司: 只做内核设计和 IP 授权, 不参与芯片设计. 对比项 Cortex-A (Application) Cortex-R (Real-time) Cortex-M (Microcontroller) 特点 高时钟频率, 长流水线, 高性能 较高时钟频率, 较长的流水线, 实时性强 时钟频率较低, 通常较短的流水线, 超低功耗 应用场景 移动计算, 智能手机, 平板电脑

    2024年02月02日
    浏览(12)
  • stm32中断的基础知识

    某些事件可能需要CPU暂停目前的程序优先处理 实现CPU暂停当前的程序并优先处理某一事件的机制称作中断 处理这一事件的程序叫做中断服务程序(Interrupt Handler) 中断的硬件实现 内部或外部信号产生中断 —程序跳转到某一特定地址(中断向量) —程序从中断向量跳转到对

    2023年04月24日
    浏览(23)
  • STM32 串口基础知识学习

    串行通信:数据逐位按顺序依次传输。 并行通信:数据各位通过多条线同时传输。 对比 传输速率:串行通信较低,并行通信较高。 抗干扰能力:串行通信较强,并行通信较弱。 通信距离:串行通信较长,并行通信较短。 IO资源占用:串行通信较少,并行通信较多。 成本:

    2024年02月15日
    浏览(11)
  • STM32 ADC基础知识讲解

    在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。 ADC 指的是模数转换器(Analog-to-Digital Converter),它是一种用于将模拟信号转换为数字信号的电子设备或电路。 模拟信号是连续变化的信号,可

    2024年02月09日
    浏览(14)
  • STM32 基础知识入门 (C语言基础巩固)

    1、在不改变其他位的值的状况下,对某几个位进行设值 这个场景在单片机开发中经常使用,方法就是先对需要设置的位用操作符进行清零操作, 然后用|操作符设值。 比如我要改变 GPIOA 的 CRL 寄存器 bit6(第 6 位)的值为 1,可以先对寄 存器的值进行清零操作:  然后再与需

    2024年02月01日
    浏览(22)
  • 【STM32】基础知识 第六课 内核 & 架构

    4 个主动单元 + 4 个被动单元 主动单元 被动单元 Cortex M3 内核 DCode 总线 (D-Bus) 内部 FLASH Cortex M3 内核系统总线 (S-Bus) 内部 SRAM 通用 DMA1 FSMC 通用 DMA2 AHB 到 APB 的桥, 它连接的所有 APB 外设 AHB (Advance High-performance Bus): 高级高性能总线 APB (Advance Peripheral Bus): 高级外围总线 ICode 总线

    2023年04月24日
    浏览(20)
  • STM32-OTA升级-基于STM32CubeMX+STM32F103(一)基础知识

    0 引言 对于一个项目而言,往往将远程升级作为程序的最后一步(基本所有功能都开发完成之后再考虑)。但是在我看来,我们在写单片机的程序之前,就要规划好FLASH的使用情况,因为code、全局变量等重要信息都是放在FLASH(常说的闪存)中的,SRAM是程序运行时的存放位置

    2024年02月04日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包