当前位置: 首页 > news >正文

MCU开发学习记录16* - 看门狗学习与实践(HAL库) - IWDG与WWDG -STM32CubeMX

名词解释:

IWDG:Independent watchdog
WWDG:Window watchdog
LSE:
Low-Speed External Clock

统一文章结构(数字后加*):

        第一部分: 阐述外设工作原理;第二部分:芯片参考手册对应外设的学习;第三部分:使用STM32CubeMX进行外设初始化;第四部分:添加应用代码;第五部分:附上本篇文章的工程代码的下载地址。

        本文将介绍IWDG、WWDG的相关概念以及STM32CubeMX生成IWDG、WWDG的配置函数,实现用IWDG、WWDG的监控程序。
        两者之间的主要区别是独立看门狗,可以在超时发生之前的任何时候重置,但是窗口看门狗只能在特定时间窗口中重置。

下面是引用野火手册的内容(IWDG WWDG 区别 ):
        RLR 是重装载寄存器,用来设置独立看门狗的计数器的值。TR 是窗口看门狗的计数器的值,由用户独立设置,WR 是窗口看门狗的上窗口值,由用户独立设置。

一、什么是IWDG?

1.1 IWDG 简介

1.1.1 IWDG介绍

        IWDG 是嵌入式系统中用于 ​检测和恢复程序异常运行​ 的硬件模块,核心功能是防止系统因意外干扰或软件错误导致“死机”。注意开启IWDG后,只有复位才能关闭。

1. IWDG的全称:
        Independent watchdog - 独立看门狗

2. IWDG的本质:
        能产生系统复位信号的计数器。

3. IWDG的特性:
        · 递减的计数器
        · 时钟由独立的RC振荡器提供(可在待机和停止模式下运行)
        · 看门狗被激活后,当递减计数器计数到0x000时产生复位

4. 喂狗:
        在计数器计数到0之前,重装载计数器的值,防止复位。

1.1.2 IWDG作用

        独立看门狗是异常处理的最后手段,不可依赖,应在设计时尽量避免异常的发生!

1. IWDG 主要针对以下两类异常:

        · 外界干扰​:电磁干扰(EMI)、电源波动等外部因素导致 CPU 程序跑飞(如跳转到错误地址或卡死在循环中)。

        · 系统自身异常​:硬件故障(如时钟失效)或软件缺陷(如堆栈溢出、死锁)导致程序无法正常执行。

2. IWDG 核心作用:

        · 程序跑飞检测​:IWDG 通过 ​定时计数器​ 机制工作,若主程序未按时“喂狗”(重置计数器),则判定系统异常,触发复位。

        · 自动恢复系统​:超时未喂狗时,IWDG 强制硬件复位 CPU,使系统从初始状态重新运行,避免永久性死机。

3. IWDG 应用场景:

        · 高稳定性需求​:工业控制、医疗设备、汽车电子等对系统可靠性要求高的领域。

        · 时间精度要求低​:IWDG 的时钟通常由独立低速 RC 振荡器(如 32kHz)提供,复位时间误差较大,适合对时序不敏感的场景。

1.2 IWDG 硬件介绍

1.2.1 IWDG功能框图

1. 独立看门狗时钟

        独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效。

2. 计数器时钟 :

        递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,我们可以操作预分频器寄存器 IWDG_PR 来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟CK_CNT= 40/ 4*2^PRV,一个计数器时钟计数器就减一。

3. 状态寄存器:

        状态寄存器 SR 只有位 0PVU 和位 1:RVU 有效,这两位只能由硬件操作,软件操作不了。
        RVU(看门狗计数器重载值更新(Watchdog counter reload value update)):看门狗计数器重装载值更新,硬件置 1 表示重装载值的更新正在进行中,更新完毕之后由硬件清 0。
        PVU(看门狗预分频器值更新
(Watchdog prescaler value update)):看门狗预分频值更新,硬件置’1’指示预分频值的更新正在进行中,当更新完成后,由硬件清 0。所以只有当 RVU/PVU 等于 0 的时候才可以更新重装载寄存器/预分频寄存器。

4. 重装载寄存器:

        重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。超时时间 Tout = (4*2^prv) / 40 * rlv (s) prv 是预分频器寄存器的值,rlv 是重装载寄存器的值。

5. 计数器:

        独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗。

6. 键寄存器 (IWDG_KR)

1.2.2 IWDG 寄存器配置流程

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

1.2.3 IWDG 溢出时间计算

引用正点原子PPT内容:

1.2.4 IWDG 最短时间/最长时间 超时时间

根据原理图可以得知,MCU的LSE

二、什么是WWDG?

2.1 WWDG 简介

2.1.1 WWDG介绍

        WWDG(窗口看门狗)是嵌入式系统中用于监控程序执行的硬件模块,其核心功能是确保程序在预定的时间窗口内执行特定操作,以防止因软件错误或意外干扰导致的异常运行。

1. WWDG的全称:
        Window watchdog,即窗口看门狗

2. WWDG的本质:
        能产生系统复位信号和提前唤醒中断的计数器

3. WWDG的特性:(具有上下限)
        · 递减的计数器
        · 当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0)
        · 计数器的值大于W[6:0]值时喂狗会复位
        · 提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生

4. 喂狗:
       在窗口期内重装载计数器的值,防止复位

2.1.2 WWDG作用

        用于监测单片机程序运行时效是否精准,主要检测软件异常。

        需要精准检测程序运行时间的场合。

2.1.3 WWDG工作原理

来源于正点原子PPT:W[6:0] - 0x40

2.2 WWDG 硬件介绍

2.2.1 WWDG时钟源

2.2.2 WWDG硬件框图

1. 窗口看门狗时钟
        
窗口看门狗时钟来自 PCLK1,PCLK1 最大是 42M,由 RCC 时钟控制器开启。

2. 计数器时钟
        
计数器时钟由 CK 计时器时钟经过预分频器分频得到,分频系数由配置寄存器 CFR 的位8:7 WDGTB[1:0] 配置,可以是 [0,1,2,3],其中 CK 计时器时钟 =PCLK1/4096,除以 4096 是手册 规定的,所以计数器的时钟 CNT_CK=PCLK1/4096/(2^WDGTB)。
        这就可以算出计数器减一个数的时间 T= 1/CNT_CK = Tpclk1 * 4096 * (2^WDGTB)。

3. 计数器
        
7 WDGA:WWDG激活位 (Activation bit) - 0:禁止看门狗;1:使能看门狗
        窗口看门狗(WWDG)通过一个7位递减计数器(T[6:0])来监控程序的运行状态,其计数值范围为0X40到0X7F(即64到127)。其工作流程如下:
        · 计数器从127的值递减到64是程序的正常运行窗口,需在此期间“喂狗”以重置计数器。
        · 如果计数器递减到0X40,可以通过启用提前唤醒中断(EWI置1)触发“死前中断”,让程序执行紧急任务。
        · 若未“喂狗”且计数器进一步递减到0X3F,则触发系统复位,强制恢复正常运行。

4. 窗口值
        
7位递减计数器的控制寄存器CR的T[6:0]中实现监控,并在程序异常时触发复位或中断。
        · 计数器范围:从最大值0X7F(127)递减到0X40(64)。
        · 窗口范围W[6:0]  - 0X40之间 进行喂狗
        · 复位触发:当计数器递减到0X3F(63)时,触发系统复位。
        · 监控目的:确保程序在规定时间窗口内完成“喂狗”操作(即重置计数器)。

2.2.3 WWDG 配置流程

1. WWDG工作参数初始化:HAL_WWDG_Init ()
2. WWDG Msp初始化:HAL_WWDG_MspInit ()        配置NVIC、CLOCK等
3. 设置优先级,使能中断:HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()
4. 编写中断服务函数:WWDG_IRQHandler() →HAL_WWDG_IRQHandler
5. 重定义提前唤醒回调函数:HAL_WWDG_EarIyWakeupCallback ()
6. 在窗口期内喂狗:HAL_WWDG_Refresh ()

2.2.4 WWDG 溢出时间计算

引用正点原子PPT内容:

2.2.5 WWDG 最短时间/最长时间 超时时间

三、基于HAL库配置 I/W WDG

3.1 基于HAL库配置 IWDG

3.1.1 STM32CubeMX配置IWDG(下图设置喂狗时间为2s左右)

3.1.2 IWDG使用

3.2 基于HAL库配置 WWDG

3.2.1 STM32CubeMX配置WWDG

超时时间:

      T = (4096 * 2^WWDG_SCKPSC(2) * (T[5:0](95-64)+1)) / F_WWDG(42M)
           = 12.4ms

3.2.2 WWDG使用

3.3 补充

3.3.1 IWDG获取当前状态值

IWDG 的计数器值无法直接通过寄存器读取(硬件设计限制)。

野火例程给出检查RCC_CSR 的 IWDGRSTF位 查看复位是否由独立看门狗引起。

/* 检查是否为独立看门狗复位 */
if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET) {/* 独立看门狗复位 *//* 亮红灯 */LED_RED;/* 清除标志 */__HAL_RCC_CLEAR_RESET_FLAGS();/* 如果一直不喂狗,会一直复位,加上前面的延时,会看到红灯闪烁在 1s 时间内喂狗的话,则会持续亮绿灯 */
} else {/* 不是独立看门狗复位 (可能为上电复位或者手动按键复位之类的) *//* 亮蓝灯 */LED_BLUE;
}

3.3.2 WWDG获取当前状态值

1. 获取 WWDG 计数器当前值

uint8_t Get_WWDG_Counter(void) {return (WWDG->CR & 0x7F);  // 返回当前计数器值(范围 0x40~0x7F)
}

2. 获取 WWDG 窗口值

uint8_t Get_WWDG_WindowValue(void) {return (WWDG->CFR & 0x7F);  // 返回窗口值(范围 0x40~0x7F)
}

四、本文的工程文件下载链接

工程Github下载链接:https://github.com/chipdynkid/MCU-DL-STM32
(国内)工程Gitcode下载链接https://gitcode.com/chipdynkid/MCU-DL-STM32

相关文章:

MCU开发学习记录16* - 看门狗学习与实践(HAL库) - IWDG与WWDG -STM32CubeMX

名词解释: IWDG:Independent watchdog WWDG:Window watchdog LSE:​Low-Speed External Clock​ 统一文章结构(数字后加*): 第一部分: 阐述外设工作原理;第二部分&#…...

如何解决LCMS 液质联用液相进样器定量环漏液问题

以下是解决安捷伦1260液相色谱仪为例的进样器定量环漏液问题的一些方法:视频操作 检查相关部件 检查定量环本身:观察定量环是否有破损、裂纹或变形等情况。如果发现定量环损坏,需及时更换。检查密封垫:查看进样阀的转子密封垫、计…...

【Linux】ssh命令 – 安全的远程连接服务

原创:厦门微思网络 SSH命令的概念 ssh命令的功能是安全地远程连接服务器主机系统,作为OpenSSH套件中的客户端连接工具,ssh命令可以让我们轻松地基于SSH加密协议进行远程主机访问,从而实现对远程服务器的管理工‍作。 语法 ssh 参…...

硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无

硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无 1. 终极比喻:OID是设备的“图书编码系统” 想象你走进一座巨型图书馆(这个图书馆就是一台网络设备,比如路由器…...

java后端学习

1.Java基础 Java基础学习-CSDN博客 2.spring->springboot spring学习->sprintboot-CSDN博客 3.maven Maven-CSDN博客 4mybatis ->mybatisplus mybatis ->mybatisplus-CSDN博客 5.git操作学习 git版本控制学习-CSDN博客 6.mysql …...

Python打卡 DAY 27

知识点回顾: 1. 装饰器的思想:进一步复用 2. 函数的装饰器写法 3. 注意内部函数的返回值 作业: 编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值) def logger(func):def wrap…...

2025蓝桥杯JAVA编程题练习Day8

1. 路径 题目描述 小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。 小蓝的图由 2021 个结点组成,依次编号 1 至 2021。 对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21&#xff0…...

7 个正则化算法完整总结

哈喽!我是我不是小upper~之前和大家聊过各类算法的优缺点,还有回归算法的总结,今天咱们来深入聊聊正则化算法!这可是解决机器学习里 “过拟合” 难题的关键技术 —— 想象一下,模型就像个死记硬背的学生&am…...

lesson03-简单回归案例(理论+代码)

一、梯度下降 二、 线性方程怎么样? 三、有噪音吗? 四、让我们看一个列子 五、如何优化 启发式搜索 学习进度 六、线性回归、逻辑回归、分类 总结、 简单线性回归是一种统计方法,用于确定两个变量之间的关系。具体来说,它试图…...

Linux系统篇——文件描述符FD

🧠 Linux 文件描述符(File Descriptor)详解与学习指南 一、什么是文件描述符(fd) 在 Linux 中,一切皆文件(everything is a file),包括普通文件、目录、套接字&#xff…...

C++ Kafka客户端(cppkafka)安装与问题解决指南

一、cppkafka简介 cppkafka是一个现代C的Apache Kafka客户端库,它是对librdkafka的高级封装,旨在简化使用librdkafka的过程,同时保持最小的性能开销。 #mermaid-svg-qDUFSYLBf8cKkvdw {font-family:"trebuchet ms",verdana,arial,…...

MySQL的缓存策略

一、MySQL缓存方案用来解决什么 缓存用户定义的热点数据,用户直接从缓存获取热点数据,降低数据库的读写压力场景分析: 内存访问速度是磁盘访问速度 10 万倍(数量级)读的需求远远大于写的需求mysql 自身缓冲层跟业务无…...

ubuntu22.04卸载vscode

方法 1:通过 Snap 卸载 VSCode 如果你是通过 Snap 安装的 VSCode(Ubuntu 22.04 默认推荐方式),按照以下步骤卸载: 检查是否通过 Snap 安装: bash snap list | grep code如果输出显示 code,说明…...

主流数据库排查与优化速查手册

主流数据库排查与优化速查手册(优化版) 一、连接失败 1.1 统一排查流程 #mermaid-svg-IIyarbd8VatJFN14 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IIyarbd8VatJFN14 .error-icon{fill:…...

MySQL 数据库优化:InnoDB 存储引擎深度解析:架构、调优与最佳实践

InnoDB 是 MySQL 的默认存储引擎,因其支持事务、行级锁和崩溃恢复等特性,广泛应用于高并发、数据一致性要求高的场景。本文将从 InnoDB 的核心架构、调优策略、监控诊断、高级特性 到 备份恢复 进行系统性分析,并结合代码示例与实战案例,帮助开发者全面掌握其应用与优化技巧…...

[AI算法] LLM训练-构建transformers custom model

文章目录 1. 继承与实现基础结构2. 支持 DeepSpeed 和 Accelerate 的注意事项a. 模型输出格式b. 设备管理c. 分布式训练兼容性d. DeepSpeed 特定优化 3. 训练脚本集成建议4. 测试与调试建议 在使用 Hugging Face 的 transformers 库时,若要自定义一个继承自 PreTrai…...

突发,苹果发布下一代 CarPlay Ultra

汽车的平均换代周期一般都超过5年,对于老旧燃油车而言,苹果的 Carplay 是黑暗中的明灯,是延续使用寿命的利器。 因为你可能不需要冰箱彩电大沙发,但一定需要大屏车载导航、倒车影像、车载听歌。如果原车不具备这个功能&#xff0…...

git克隆github项目到本地的三种方式

本文旨在使用git工具将别人发布在github上的项目保存到本地 1.安装git,创建github账户,并使用ssh关联自己的github账号和git,具体教程可以参照下面两篇文章: Github入门教程,适合新手学习(非常详细&#…...

Excel MCP: 自动读取、提炼、分析Excel数据并生成可视化图表和分析报告

最近,一款Excel MCP Server的开源工具火了,看起来功能很强大,咱们今天来一探究竟。 基础环境 最近两年,大家都可以看到AI的发展有多快,我国超10亿参数的大模型,在短短一年之内,已经超过了100个&…...

香港 GPU 服务器优势及使用场景解析

在快速发展的科技领域,数据处理和复杂计算已成为众多行业的支柱,GPU 服务器的重要性不容小觑。GPU 服务器是内部集成一个或多个 GPU的物理服务器,用于执行每个用例所需的任务。而香港 GPU 服务器,是指部署在中国香港数据中心、配备…...

Go语言交替打印问题及多种实现方法

Go语言交替打印问题及多种实现方法 在并发编程中,多个线程(或 goroutine)交替执行任务是一个经典问题。本文将以 Go 语言为例,介绍如何实现多个 goroutine 交替打印数字的功能,并展示几种不同的实现方法。 Go 语言相关…...

Grafana分布统计:Heatmap面板

Heatmap是是Grafana v4.3版本以后新添加的可视化面板,通过热图可以直观的查看样本的分布情况。在Grafana v5.1版本中Heatmap完善了对Prometheus的支持。这部分,将介绍如何使用HeatmapPanel实现对Prometheus监控指标的可视化。 使用Heatmap可视化Histogr…...

rk3576 gstreamer opencv

安装gstreamer rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 Installing on Linux sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-pl…...

用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?

一、方案背景​ 随着数字化安防与智能交通管理发展,视频监控远程管理需求激增。EasyCVR作为专业视频融合平台,具备多协议接入等核心功能,是智能监控的重要工具。但实际部署中,当EasyCVR处于内网且路由器无法进行端口映射时&#…...

棋牌室台球室快速接入美团团购接口

北极星平台从2024年12月份开始慢慢关闭,现在很多开发者反馈北极星token已经不能刷新了,全部迁移到美团团购综合平台。 申请这个平台要求很高 1、保证金费用要15万起步 2、平台必须是二级等保和安全产品 ,一个二级等保费用10万起步 所以很多…...

Qwen3技术报告解读:训练秘籍公开,推理与非推理模型统一,大模型蒸馏小模型(报告详细解读)

1.简介 Qwen3 是 Qwen 模型家族的最新版本,它是一系列大型语言模型(LLMs),旨在提升性能、效率和多语言能力。基于广泛的训练,Qwen3 在推理、指令遵循、代理能力和多语言支持方面取得了突破性进展,具有以下…...

entity线段材质设置

在cesium中,我们可以改变其entity线段材质,这里以直线为例. 首先我们先创建一条直线 const redLine viewer.entities.add({polyline: {positions: Cesium.Cartesian3.fromDegreesArray([-75,35,-125,35,]),width: 5,material:material, 保存后可看到在地图上创建了一条线段…...

Word图片格式调整与转换工具

软件介绍 本文介绍的这款工具主要用于辅助Word文档处理。 图片排版功能 经常和Word打交道的人或许都有这样的困扰:插入的图片大小各异,排列也参差不齐。若不加以调整,遇到要求严格的领导,可能会让人颇为头疼。 而这款工具能够统…...

小刚说C语言刷题—1700请输出所有的2位数中,含有数字2的整数

1.题目描述 请输出所有的 2 位数中,含有数字 2 的整数有哪些,每行 1个,按照由小到大输出。 比如: 12、20、21、22、23… 都是含有数字 2的整数。 输入 无 输出 按题意要求由小到大输出符合条件的整数,每行 1 个。…...

视频抽帧并保存blob

视频抽帧 /*** description 获取文件中的每一帧* param { File } file* param { Number } time 每一帧的时间间隔(单位:秒)* param { Boolean } isUseInterval 是否使用间隔 为false只会获取这一帧* returns { Map }* example await captureFrame({ file, 20 }) > M…...

opencloudos 安装 mosquitto

更新系统并安装依赖 sudo dnf update -y sudo dnf install -y epel-release # 若需要 EPEL 额外仓库 sudo dnf install -y gcc-c cmake openssl-devel c-ares-devel libuuid-devel libwebsockets-devel安装 Mosquitto 通过默认仓库安装(推荐) sudo dn…...

STM32CubeMX使用SG90舵机角度0-180°

1. 配置步骤 1.1 硬件连接 舵机信号线 → STM32的PWM输出引脚(如 PA2,对应定时器 TIM2_CH3)。 电源和地 → 外接5V电源(确保共地)。 1.2 定时器配置(以TIM2为例) 在STM32CubeMX中&#xff1…...

【Umi】项目初始化配置和用户权限

app.tsx import { RunTimeLayoutConfig } from umijs/max; import { history, RequestConfig } from umi; import { getCurrentUser } from ./services/auth; import { message } from antd;// 获取用户信息 export async function getInitialState(): Promise<{currentUse…...

使用哈希表封装myunordered_set和myunordered_map

文章目录 使用哈希表封装myunordered_set和myunordered_map实现出复用哈希表框架&#xff0c;并支持insert支持迭代器的实现constKey不能被修改unordered_map支持[ ]结语 我们今天又见面啦&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01…...

光学变焦和数字变倍模块不同点概述!

一、光学变焦与数字变倍模块的不同点 1. 物理基础 光学变焦&#xff1a;通过调整镜头组中镜片的物理位置改变焦距&#xff0c;实现无损放大。例如&#xff0c;上海墨扬的MF-STAR吊舱采用30倍光学变焦镜头&#xff0c;焦距范围6~180mm&#xff0c;等效焦距可达997mm。 数字…...

Spring MVC 中请求处理流程及核心组件解析

在 Spring MVC 中&#xff0c;请求从客户端发送到服务器后&#xff0c;需要经过一系列组件的处理才能最终到达具体的 Controller 方法。这个过程涉及多个核心组件和复杂的映射机制&#xff0c;下面详细解析其工作流程&#xff1a; 1. 核心组件与请求流程 Spring MVC 的请求处…...

《100天精通Python——基础篇 2025 第19天:并发编程启蒙——理解CPU、线程与进程的那些事》

目录 一、计算机基础知识1.1 计算机发展简史1.2 计算机的分类1.2.1 超级计算机&#xff08;Supercomputer&#xff09;1.2.2 大型机&#xff08;Mainframe Computer&#xff09;1.2.3 迷你计算机&#xff08;Minicomputer&#xff09;---- 普通服务器1.2.4 工作站&#xff08;W…...

<PLC><视觉><机器人>基于海康威视视觉检测和UR机械臂,如何实现N点标定?

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,相关设备如触摸屏(HMI)、交换机等工控产品,如果有…...

FC7300 WDG MCAL 配置引导

在WDG模块中,用户需要选择GPT资源,因此在配置WDG组件之前,需要先选择GPT通道。WDG包含三个组件,每一个组件对应不同的硬件。 Wdg:对应WDOG0Wdg_174_Instance1:对应WDOG1Wdg_174_Instance2:对应WDOG2一、WDG 组件 1. General Wdg Disable Allowed:是否允许在WDG运行过程…...

Leaflet 自定义瓦片地图与 PHP 大图切图算法 解决大图没办法在浏览器显示的问题

为什么使用leaflet 使用 Leaflet 来加载大图片&#xff08;尤其是通过瓦片化的方式&#xff09;是一种高效的解决方案&#xff0c;主要原因如下&#xff1a; 1. 性能优化 减少内存占用&#xff1a;直接加载大图片会占用大量内存&#xff0c;可能导致浏览器崩溃或性能下降。瓦片…...

MySQL——十、InnoDB引擎

MVCC 当前读&#xff1a; 读取的是记录的最新版本&#xff0c;读取时还要保证其他并发事务不能修改当前记录&#xff0c;会对读取的记录进行加锁。 -- 当前读 select ... lock in share mode(共享锁) select ... for update update insert delete (排他锁)快照读&#xff1a;…...

import pywinauto后tkinter.filedialog.askdirectory()无法调用,直接卡死,应如何解决

诸神缄默不语-个人技术博文与视频目录 具体情况就是我需要用pywinauto进行一些软件的自动化操作&#xff0c;同时需要将整个代码功能用tkinter的可视化界面来展示&#xff0c;在调用filedialog.askdirectory()的时候代码直接不运行了&#xff0c;加载不出来。我一开始还以为是…...

display:grid网格布局属性说明

网格父级 &#xff1a;display:grid&#xff08;块级网格&#xff09;/ inline-grid&#xff08;行内网格&#xff09; 注意&#xff1a;当设置网格布局&#xff0c;column、float、clear、vertical-align的属性是无效的。 HTML: <ul class"ls02 f18 mt50 sysmt30&…...

初识——QT

QT安装方法 一、项目创建流程 创建项目 入口&#xff1a;通过Qt Creator的欢迎页面或菜单栏&#xff08;文件→新建项目&#xff09;创建新项目。 项目类型&#xff1a;选择「Qt Widgets Application」。 路径要求&#xff1a;项目路径需为纯英文且不含特殊字符。 构建系统…...

力扣-78.子集

给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 class Solution {List<List<Integer>> res new ArrayList<>();List<I…...

python中字符串的操作

‌1. 字符串创建‌ 使用单引号、双引号或三引号创建字符串三引号适用于多行字符串&#xff0c;且可以自由包含单双引号原始字符串使用r前缀&#xff0c;如r’Hello\nWorld’会原样输出\n ‌2. 基本操作‌ 拼接&#xff1a;使用运算符或join()方法复制&#xff1a;使用*运算符…...

《Elasticsearch 源码解析与优化实战》笔记

术语 思维导图 基础和环境 1-2 主要流程 3-10 内部模块 11-17 优化和诊断 18-22 资料 https://elasticsearchbook.com/...

华为网路设备学习-22(路由器OSPF-LSA及特殊详解)

一、基本概念 OSPF协议的基本概念 OSPF是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;主要用于在自治系统&#xff08;AS&#xff09;内部使路由器获得远端网络的路由信息。OSPF是一种链路状态路由协议&#xff0c;不直接传递路由表&#xff0c;而是通过交换链路…...

多线程(四)

目录 一 . 单例模式 &#xff08;1&#xff09;什么是设计模式&#xff1f; &#xff08;2&#xff09;饿汉模式 &#xff08;3&#xff09;懒汉模式 二 . 指令重排序 今天咱们继续讲解多线程的相关内容 一 . 单例模式 &#xff08;1&#xff09;什么是设计模式&am…...

【设计模式】- 结构型模式

代理模式 给目标对象提供一个代理以控制对该对象的访问。外界如果需要访问目标对象&#xff0c;需要去访问代理对象。 分类&#xff1a; 静态代理&#xff1a;代理类在编译时期生成动态代理&#xff1a;代理类在java运行时生成 JDK代理CGLib代理 【主要角色】&#xff1a; 抽…...