如何编写STM32的看门狗程序

引言

STM32的看门狗编程主要涉及独立看门狗(IWDG)和窗口看门狗(WWDG)。以下是这两种看门狗的编程方法:

独立看门狗(IWDG)

1. 原理:
   - IWDG由内部低速时钟(LSI)驱动,通常在30~60KHz之间,一般按40KHz计算。
   - 它是一个12位的递减计数器,从0xFFF开始递减到0x000,若未在计数到0之前“喂狗”(重置计数器),则产生系统复位。

2. 编程步骤:
   - 取消寄存器写保护:向IWDG_KR写入0x5555,取消IWDG_PR和IWDG_RLR的写保护。
   - 设置预分频器:通过IWDG_PR设置分频系数。
   - 设置重装载值:通过IWDG_RLR设置重装载值。
   - 启动看门狗:向IWDG_KR写入0xCCCC启动看门狗。
   - 喂狗:在计数器达到0之前,向IWDG_KR写入0xAAAA重新加载IWDG_RLR的值到计数器中,避免复位。

3. 代码示例:
 

 #include "stm32f10x.h"
   
   void IWDG_Init(uint8_t prescaler, uint16_t reload) {
       IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); // 取消写保护
       IWDG_SetPrescaler(prescaler); // 设置预分频系数
       IWDG_SetReload(reload); // 设置重装载值
       IWDG_ReloadCounter(); // 重装载计数器
       IWDG_Enable(); // 启用看门狗
   }
   
   void IWDG_Feed(void) {
       IWDG_ReloadCounter(); // 喂狗操作
   }


   在主循环中定期调用`IWDG_Feed()`以防止看门狗超时。

窗口看门狗(WWDG)

1. 原理:
   - WWDG也是一个递减计数器,但其值必须在上窗口和下窗口之间才可以“喂狗”。
   - 下窗口值是固定的0x40,上窗口值可以设置,如果计数器值小于0x40或在上窗口值以上喂狗,都会产生复位。

2. 编程步骤:
   - 配置WWDG:设置预分频器、计数器初始值和窗口值。
   - 启动WWDG:使能窗口看门狗。
   - 喂狗:在计数器值在上窗口值和0x40之间时喂狗。

3. 代码示例:
  

 #include "stm32f10x.h"
   
   void WWDG_Init(uint8_t prescaler, uint8_t counter, uint8_t window) {
       WWDG_SetPrescaler(prescaler); // 设置预分频系数
       WWDG_SetWindowValue(window); // 设置窗口值
       WWDG_Enable(); // 启用窗口看门狗
   }
   
   void WWDG_Feed(void) {
       WWDG_Refresh(); // 喂狗操作
   }


   在主循环中,当计数器值在窗口范围内时,定期调用`WWDG_Feed()`以防止看门狗超时。

以上是STM32看门狗的基本编程方法,具体参数设置需要根据实际应用场景和需求进行调整。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一题2024/11/2 3226. 使两个整数相等的位更改次数

class Solution:def minChanges(self, n: int, k: int) -> int:binary_n format(n, b)binary_k format(k, b)res0# 将两个二进制字符串长度对齐,前面补零max_len max(len(binary_n), len(binary_k))binary_n binary_n.zfill(max_len)binary_k binary_k.zfil…

.NET Core WebApi第6讲:WebApi的前端怎么派人去拿数据?(区别MVC)

一、前端界面小基础 head:引入CSS, 引入JS是写在head里面。 body:眼睛肉眼能看到的用户展示的界面是写在body里面。 二、前端怎么派人去拿数据? 1、MVC:前后端不分离,MVC相比WebApi只是多了一个views的文件夹 &am…

虚拟现实与增强现实:重塑娱乐和教育的边界!

内容概要 在这个瞬息万变的时代,虚拟现实(VR)和增强现实(AR)正如两位魔法师,腾云驾雾间掀起了一场教育与娱乐的革命。虚拟现实带我们飞跃平凡,进入一个充满奇迹的数字宇宙,仿佛我们…

Win10搭建SFTP服务器

1、下载安装 Release v9.5.0.0p1-Beta PowerShell/Win32-OpenSSH GitHub 下载OpenSSH-Win64.zip 解压之后放入到:C:\Program Files (x86)\OpenSSH-Win64以管理员身份打开CMD进入到 C:\Program Files (x86)\OpenSSH-Win64 文件夹执行命令 powershell.exe -Exec…

NNLM——预测下一个单词

一、原理篇 NNLM(Neural Network Language Model,神经网络语言模型)是一种通过神经网络进行语言建模的技术,通常用于预测序列中的下一个词。 NNLM的核心思想是使用词嵌入(word embedding)将词转换为低维向…

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (4) - 平台适配

在移植 AWTK 到 HarmonyOS NEXT 系统之前,我们需要先完成平台适配,比如文件、多线程(线程和同步)、时间、动态库和资源管理。 1. 文件 HarmonyOS NEXT 支持标准的 POSIX 文件操作接口,我们可以直接使用下面的代码&am…

TON 区块链开发的深入概述#TON链开发#DAPP开发#交易平台#NFT#Gamefi链游

区块链开发领域发展迅速,各种平台为开发人员提供不同的生态系统。其中一个更有趣且越来越相关的区块链是TON(开放网络)区块链。TON 区块链最初由 Telegram 构思,旨在提供快速、安全且可扩展的去中心化应用程序 (dApp)。凭借其独特…

【机器学习】27. 马尔科夫链和隐马模型HMM

马尔科夫链和隐马模型HMM 1. Markov chain2. 计算3. Hidden Markov Model4. 两个假设5. 问题1:evaluation6. Forward 算法7. 问题2:Decoding8. Viterbi算法9. 问题3:Learning10. 期望最大化算法Expectation Maximization 1. Markov chain 马…

向量和矩阵的范数

一般,实数的绝对值来表示“实数”的大小;复数的模来表示复数的大小。这在实际应用中,带来了非常大的便利。 对于一个平面向量 a a a ,当其在直角坐标系中的分量分别为 x 0 x_0 x0​和 y 0 y_0 y0​时,我们常用 x 0 2 y 0 2 \sq…

树莓派开发相关知识七 -串口数码管

1、概述 一个普通的数码管实际上为71个LED灯。 上图可知,A-G加上DP点8个LED,通过不同的亮暗来显示出所需的数字。 如果同时要控制多个数码管,则需要的GPIO未免太多。 我们选择控制4个数码管,通过串行转并行的方式实现控制。 所…

基于IMX6ULL的电子产品量产工具

参考博客: https://blog.csdn.net/m0_63168877/article/details/138545059一、设计思路 软件框架及目录 二、显示系统 2.1显示管理器框架 2.2DispOpr 结构体 在disp_manager.h这一层抽象出显示结构体 在底层显示模块分配、设置这个结构体,并且向本层…

React 中使用 Redux Toolkit 状态管理

在现代 React 应用程序中,状态管理是一个至关重要的部分。使用 Redux Toolkit 可以简化 Redux 的配置和管理。本文将通过三个文件的示例,详细讲解如何使用 Redux Toolkit 创建和管理一个简单的计数器状态,并通过类比源 store 和根 store 的概…

3、liunx系统网络配置

一、liunx网络配置 Linux服务器网卡默认配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0表示第一块网卡,eth1表示第二块网卡,依次类推,例如DELL R720标配有4块千兆网卡&am…

【零售和消费品&存货】快递包裹条形码与二维码识别系统源码&数据集全套:改进yolo11-RFCBAMConv

改进yolo11-RVB等200全套创新点大全:快递包裹条形码与二维码识别系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统…

牛客网最新Java高频面试题汇总(2024最新含答案)

作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试,肯定会遇到一些这样的问题: 1、看你项目都用的框架,熟悉…

电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)

问题:电科金仓(人大金仓)数据库链接异常,重启失败,查看日志如下: 致命错误: XX000: License file expired. 位置: PostmasterMain, postmaster.c:725 解决方法: 一、下载授权文件 根据安装版本在官网下载授权文件(电科金仓-成为世界卓越的数据库产品与服务提供商)…

Hadoop期末复习(完整版)

前言(全部为语雀导出,个人所写,仅用于学习!!!!) 复习之前我们要有目的性,明确考什么,不考什么。 对于hadoop来说,首先理论方面是跑不掉的&#x…

河北冠益荣信科技公司洞庭变电站工程低压备自投装置的应用

摘 要:随着电力需求增长,供电可靠性变得至关重要,许多系统已有多回路供电。备用电源自动投入装置能提升供电可靠性,它能在主电源故障时迅速切换到备用电源。本文介绍的AM5-DB低压备自投装置,为洞庭变电站提供多种供电方…

Spring Boot:打造动态定时任务,开启灵活调度之旅

一、描述 在 Spring Boot 中设置动态定时任务是一种非常实用的功能,可以根据实际需求在运行时动态地调整定时任务的执行时间、频率等参数。以下是对 Spring Boot 设置动态定时任务的简单介绍: 1、传统定时任务的局限性 在传统的 Spring Boot 定时任务…

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua? Lua 环境安装 Lua基本语法 注释 数据类型 nil(空) Boolean number(数字) string(字符串) function(函数) userdata thread table&#xff…