STM32的看门狗
独立看门狗(IWDG)
IWDG简介
独立看门狗(Independent Watchdog,通常缩写为IWDG)主要作用是主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题。
- WDG本质上是一个12位的递减计数器(滴答定时器24位递减计数器、通用定时器16位计数器)。当计数器的值从某个初始值开始递减,并一直减到0时,系统会产生一个复位信号(IWDG_RESET)。CPU在接收到这个复位信号后,会重新启动系统,以确保系统从可能的错误或死锁状态中恢复。
- 在计数器的值减到0之前,如果程序通过特定的“喂狗”操作(即重置计数器的值)来刷新计数器,那么就不会产生复位信号,系统将继续正常运行。这种“喂狗”操作通常是由程序在正常运行时定期执行的,以确保IWDG不会因计数器超时而产生复位信号。
- 它使用专用的低速时钟(LSI):40KHz 作为时钟源,即使在主时钟发生故障时,IWDG仍然能够继续运行。IWDG可以在停止模式和待机模式下工作,确保在这些模式下系统仍然受到保护。
IWDG工作原理及框图
说明: 时钟源:LSI(40KHz)十分不精确,经过预分频器。计数器进行递减计数,当计数器减到0后,会进行系统复位。要即使的“喂狗” - 设置自动重装载的值。
IWDG的寄存器
- 键寄存器(IWDG_KR) - 控制寄存器
- 在寄存器中不写0和1的原因?
在独立看门狗(Independent Watchdog Timer, IWDG)中,键寄存器(Key Register)的写入值被严格限制为特定值(如 0xAAAA
、0x5555
或 0xCCCC
),而不允许直接写入 0
或 1
。这种设计的核心目的是通过硬件层面的安全机制,防止因软件错误或意外操作导致看门狗被错误配置或失效。以下是具体原因和机制:
关键点 | 说明 |
---|---|
安全设计 | 通过硬件限制写入值,防止意外操作或恶意篡改。 |
硬编码逻辑 | 仅响应特定“密码”值(如 0xAAAA 、0x5555 ),其他值无效。 |
流程控制 | 强制按顺序操作(解锁→配置→锁定),避免配置错误。 |
抗干扰能力 | 程序跑飞时,随机写入 0 或 1 不会干扰看门狗运行。 |
启动看门狗后就不能随便弃养
- 预分频寄存器(IWDG_PR)
- 重装载寄存器(IWDG_RLR)
- 状态寄存器(IWDG_SR)
IWDG库函数
- HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
-------这个函数内部代码的执行逻辑:
- 开启看门狗
2. 配置预分频寄存器和重装载寄存器
3.进行“喂狗” - 配置KEY寄存器
- HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
------- 这个函数是进行“喂狗” - 自动重装载值得函数。
溢出时间计算 和 IWDG配置步骤
溢出时间计算
- 公式:
- 最大时间和最小时间:
配置步骤
小实验:独立看门狗喂狗实验
实验目的
硬件清单
开发板、ST-Link、USB转TTL
- 控制/状态寄存器 (RCC_CSR)
文件代码
- iwdg.c文件代码
#include "iwdg.h"
//初始化看门狗IWDG_HandleTypeDef iwdg_handle = {0};
void iwdg_init(uint8_t psc,uint16_t rlr){iwdg_handle.Init.Prescaler = psc;iwdg_handle.Init.Reload = rlr;iwdg_handle.Instance = IWDG;HAL_IWDG_Init(&iwdg_handle);
}void iwdg_feed(void){HAL_IWDG_Refresh(&iwdg_handle);
}
- iwdg.h文件代码
#ifndef __IWDG_H__
#define __IWDG_H__
#include "stm32f1xx.h"void iwdg_init(uint8_t psc,uint16_t rlr);
void iwdg_feed(void);#endif
- main.c文件代码
实验1:0.5s进行一次喂狗
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "uart1.h"
#include "iwdg.h"int main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init(); /* LED初始化 */uart1_init(115200);printf("hello,world");iwdg_init(IWDG_PRESCALER_32,1250);printf("狗e了,该喂狗了\n");while(1){ delay_ms(500); //时间溢出时间是1s,这里计0.5s时,进行重装载值。喂狗iwdg_feed();printf("狗子喂饱了\n");}
}
实验2:检测是不是由看门狗引起的系统复位
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "uart1.h"
#include "iwdg.h"int main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init(); /* LED初始化 */uart1_init(115200);printf("hello,world");iwdg_init(IWDG_PRESCALER_64,625);printf("狗e了,该喂狗了\n");if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET){printf("这是由于看门狗饿了引起的复位!!!\n");__HAL_RCC_CLEAR_RESET_FLAGS();}elseprintf("其他复位!!!\n");while(1){ delay_ms(2000); //时间溢出时间是1s,这里计0.5s时,进行重装载值。喂狗iwdg_feed();printf("狗喂饱了\r\n");}}
注意事项和出现的问题:
当进行1s的时间溢出时,分频写32,rlr写1250时。在while循环中延时函数Delay_ms(1500),不会进行系统复位。
解决方案1:psc = 64,rlr = 625。
原因:分频系数越高,输出时钟频率越低,对晶振稳定性的要求越低。(晶振有优劣)
解决方案2:在 iwdg_init(IWDG_PRESCALER_32,1250) 前后加上20ms的延时函数
好处:外设初始化稳定了,电源电压稳定了,时钟源稳定了,各种外设可能一定的时间才能稳定,没有延时可能导致时序问题,造成看门狗没有正常的初始化。
窗口看门狗(WWDG)
WWDG简介
窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。
- 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的 6位 计数器。
- 在窗口期内重装载计数器的值,防止复位,也就是所谓的 喂狗。
产生复位条件:
- 当递减计数器值从 0x40 减到 0x3F 时复位(即T6位跳变到0);
- 计数器的值大于 W[6:0] 值时喂狗会复位。
产生中断条件:
- 当递减计数器等于 0x40 时可产生提前唤醒中断 (EWI) 。
0x40的来源:
看门狗是一个6位的计数器:但控制寄存器有7位,最高的当计数器的值减到0时,控制寄存器中的数100,000转换成二进制就是0x40。
0x3F的来源:
当看门狗计控制寄存器的第7位由1减到0时,000,000对应的二进制就是0x30。
WWDG工作原理及框图
简图:
框图:
工作原理:
-
时间窗口定义
-
窗口看门狗设定了一个允许喂狗的时间区间,通常由两个关键参数决定:
-
窗口起点(T_start):计数器从初始值递减到某一阈值后,允许开始喂狗。
-
窗口终点(T_end):计数器归零前必须完成喂狗的最后时刻。
-
-
例如,若计数器初始值为
0x7F
(127),窗口起点可能设为0x40
(64),终点为0x3F
(63)时触发复位。
-
-
强制复位条件
-
过早喂狗:在计数器值高于窗口起点时(如未进入窗口期)进行喂狗,触发复位。
-
过晚喂狗:计数器递减至窗口终点后仍未喂狗,触发复位。
-
正常喂狗:仅在计数器处于窗口期(T_start到T_end之间)时喂狗有效,重置计数器。
-
-
计数器递减机制
-
窗口看门狗的计数器通常由系统时钟驱动,逐周期递减。
-
若未及时喂狗,计数器溢出(例如从
0x40
减到0x3F
)后触发复位。
-
WWDG寄存器介绍
- 控制寄存器(WWDG_CR)
- 配置寄存器(WWDG_CFR)
- 状态寄存器(WWDG_SR)
WWDG函数介绍
- HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg)
- void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
- void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg)
- HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg)
WWDG溢出时间计算
WWDG配置步骤
小实验:窗口看门狗喂狗实验
实验目的
开启窗口看门狗,计数器值设置为 0X7F ,窗口值设置为 0X5F ,预分频系数为 8 。
计算出:
- T[6:0]-W[6:0]到窗口的时间: 29.13ms;
- W[6:0] -0x3F的时间:58.25ms。
实验现象:
- 在 while 循环里喂狗,同时翻转 LED1 状态;
- 在提前唤醒中断服务函数进行喂狗,同时翻转 LED2 状态。
硬件清单
上官二号、ST-Link、USB转TTL
文件代码
- wwdg.c文件代码
#include "wwdg.h"
#include "led.h"WWDG_HandleTypeDef wwdg_handle = {0};
void wwdg_init(uint8_t tr,uint8_t wr,uint32_t psc){wwdg_handle.Instance = WWDG;wwdg_handle.Init.Prescaler = psc; //预分频器的值wwdg_handle.Init.Counter = tr; //计数器的值wwdg_handle.Init.EWIMode = WWDG_EWI_ENABLE; //提前唤醒中断wwdg_handle.Init.Window = wr; //窗口的值HAL_WWDG_Init(&wwdg_handle);
}
//配置MSP函数初始化MCU的相关外设
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg){if(hwwdg->Instance ==WWDG){ //判断这个函数是否被占用__HAL_RCC_WWDG_CLK_ENABLE();HAL_NVIC_SetPriority(WWDG_IRQn,2,2);HAL_NVIC_EnableIRQ(WWDG_IRQn);}
}//配置中断服务函数
void WWDG_IRQHandler(void){HAL_WWDG_IRQHandler(&wwdg_handle);
}
//中断回调函数
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg){if(hwwdg->Instance == WWDG){wwdg_feed();led2_toggle();}
}
//喂狗函数
void wwdg_feed(void){HAL_WWDG_Refresh(&wwdg_handle);
}
- wwdg.h文件代码
#ifndef __WWDG_H__
#define __WWDG_H__
#include "stm32f1xx.h"void wwdg_feed(void);
void wwdg_init(uint8_t tr,uint8_t wr,uint32_t psc);#endif
- main.c文件代码
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "uart1.h"
#include "wwdg.h"int main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init(); /* LED初始化 */uart1_init(115200);printf("hello,world");wwdg_init(0x7f,0x5f,WWDG_PRESCALER_8);if(__HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST) != RESET){printf("窗口看门狗复位 \n");__HAL_RCC_CLEAR_RESET_FLAGS();}elseprintf("其他复位!!!\n");while(1){ delay_ms(30);wwdg_feed();led1_toggle();}
}
IWDG与WWDG的区别
对比点 | 独立看门狗 | 窗口看门狗 |
时钟源 | 独立时钟, LSI (40KHz) ,不精确 | PCLK1 ( 36MHz ),精确 |
复位条件 | 递减计数到 0 | 窗口期外喂狗或减到 0x3F |
中断 | 无 | 计数值减到 0x40 可 产生中断 |
递减计数器位数 | 12 位(最大计数范围: 4096~0 ) | 7 位(最大计数范围: 127~63 ) |
喂狗方式 | 写入键寄存器,重装固定值 RLR 直接 | 直接写入计数器,写多少重装多少 |
应用场合 | 防止程序跑飞,死循环,死机 | 检测程序时效,防止软件异常 |
相关文章:
STM32的看门狗
独立看门狗(IWDG) IWDG简介 独立看门狗(Independent Watchdog,通常缩写为IWDG)主要作用是主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题。 WDG本质上是一个12位的递减计数器(滴答定…...
小王包子铺的融资过程以及IPO上市过程
用包子铺来打个通俗易懂的比喻,一步步讲清楚从创业到融资上市的全过程。 🥟 故事背景:老王的包子铺 老王做的包子特别好吃,于是他决定不再只是摆摊,而是创办一家叫 “老王包子铺” 的连锁店。我们就以老王创业为线索&…...
WPF 触发器 Trigger
触发器 Trigger 触发器(Trigger)是 WPF 中的一种机制: 当某个条件满足时,自动改变控件的某些属性,比如颜色、大小、透明度等。 换句话说,就是"如果……那么就……" 的一种规则。 常见触发器类…...
CentOS算法部署
CentOS服务部署 第一章 启动两个算法服务第一步:上传算法文件第二步:安装 tmux第三步:启动服务(1) 启动第一个算法服务(2) 启动第二个算法服务 第四步:关闭防火墙 第一章 启动两个算…...
极狐GitLab 命名空间的类型有哪些?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 命名空间 命名空间在极狐GitLab 中组织项目。因为每一个命名空间都是单独的,您可以在多个命名空间中使用相同的项…...
使用 Apache POI 生成包含文本和图片的 Word 文档
一、概述 在实际开发场景中,我们经常需要自动生成包含文本和图片的 Word 文档。本示例借助 Apache POI 库,实现了向 Word 文档中插入文本和图片的功能。代码会循环插入多次文本和同一张图片,并且对图片进行等比缩放处理,以保证图片…...
Eclipse通过Tomcat启动web项目报错
错误内容:Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext。 本来运行的好好的,执行了Maven->Update Porject后就报上面的错。 通过检查发现,执行上面的命令后会将下面截图中的maven depen…...
5.7线性动态规划1
P2285 [HNOI2004] 打鼹鼠 #include<bits/stdc.h> using namespace std; struct node{int x, y, t; }a[100010]; int dp[100010]; void solve(){int n, m; cin >> n >> m;for(int i 1; i < m; i){cin >> a[i].t >> a[i].x >> a[i].y;}…...
Word如何制作三线表格
1.需求 将像这样的表格整理成论文中需要的三线表格。 2.直观流程 选中表格 --> 表格属性中的边框与底纹B --> 在设置中选择无(重置表格)–> 确定 --> 选择第一行(其实是将第一行看成独立表格了,为了设置中线&…...
【Mybatis-plus常用语法】
MyBatis-Plus 是 MyBatis 的增强工具,提供了很多便捷的功能来简化开发。以下是一些 MyBatis-Plus 的常见语法: 实体类注解:使用 TableName 注解来指定实体类和数据库表的映射关系。 TableName("user") public class User {privat…...
16.Excel:数据收集
一 使用在线协作工具 简道云。 excel的在线表格协作在国内无法使用,而数据采集最需要在线协作。 二 使用 excel 1.制作表格 在使用excel进行数据采集的时候,会制作表头给填写人,最好还制作一个示例。 1.输入提示 当点击某个单元格的时候&am…...
基于Django框架开发的企业级IT资产管理系统
CMDB 资产管理系统 资产管理系统是一个基于Django框架开发的企业级IT资产管理平台,专注于数据中心和IT设备的全生命周期管理。该系统提供了完整的资产管理功能,包括设备管理、数据中心管理、用户权限管理等核心功能。 项目截图 技术栈 后端 Python 3…...
Redis 集群版本升级指南:从 Redis 7 升级到 Redis 8
Redis 集群升级主要有两种方案: 1、在线滚动升级(无需停机) 2、停机升级(需停止服务) 一、准备工作 1. 下载 Redis 8 安装包 # Redis 8.0.0 示例(请替换为实际版本) http://download.redis.io…...
使用 Couchbase Analytics Service 的典型步骤
下面是使用 Couchbase Analytics Service 的典型步骤,包括部署、配置、创建数据集、运行查询以及监控优化等环节。 首先,您需要安装并启用 Analytics 服务;然后将节点加入集群并重平衡;接着在 Analytics 中映射数据服务的集合&am…...
C++ stl中的vector的相关用法 迭代器失效问题
文章目录 vector的介绍及使用vector的定义 vector的空间相关问题vector的迭代器的使用vector的增删查改vector迭代器失效问题 vector的介绍及使用 1、vector是用于表示可变大小数组的序列容器。 2、vector就像数组一样,采用的是连续的空间来存储元素,也…...
【Redis】哨兵机制和集群
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、哨兵机制 Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工的进行主从切换,同时需要大量的客户端需要被通知切换到…...
uni-app 引入vconsole web端正常,安卓端报错 Cannot read property ‘sendBeacon‘ of undefined
reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property sendBeacon of undefined vconsole 只支持 web 端,…...
数据管道的解耦艺术:Dagster I/O管理器实现存储与逻辑分离
在现代数据工程中,高效管理数据的读写逻辑是构建可维护管道的关键。Dagster的**I/O管理器(I/O Managers)**通过分离数据处理与数据存储逻辑,显著提升了代码的可复用性和灵活性。本文将深入解析其核心概念、应用场景及实战示例。 一…...
shell脚本--2
1、实时监控cpu、内存的shell脚本 #!/bin/bash# 获取当前时间 DATE$(date "%Y-%m-%d %H:%M:%S")# 获取CPU使用情况 CPU_USAGE$(top -b -n1 | grep "Cpu(s)" | awk {print $2 $4})# 获取内存使用情况 MEMORY_USAGE$(free | grep Mem | awk {print $3/$2 *…...
jenkins配置多nexus仓库多maven版本
jenkins多环境多nexus仓库,多maven版本 使用优化,jenkins多环境多nexus仓库,多maven版本 1、多settings.xml设置构建 背景:jenkins本地安装一个maven版本,默认只有一个settings.xml文件指定本地和远端nexus仓库&#x…...
Linux理解文件fd
先来段代码回顾C文件接口 myfile.c写文件 #include <stdio.h>int main() {FILE *fp fopen("log.txt","a");if(NULL fp){perror("fopen");return 1;}fprintf(fp,"helloWorld,%d,%s,%lf\n",10,"lsf",3.14);fclose(fp)…...
【Python】os模块
os 模块是 Python 标准库中用于与操作系统交互的核心模块,提供了许多操作文件和目 录的函数。 1. 基本介绍 os 模块提供了以下主要功能: 文件和目录操作路径操作进程管理环境变量访问 import os2. 常用功能分类 2.1 文件和目录操作 函数/方法描述o…...
2025 Mac常用软件安装配置
1、homebrew 2、jdk 使用brew安装jdk: 配置环境变量: 3、maven 使用brew安装maven: 配置环境变量: 4、光标平滑移动 5、鼠标滚轮调整 mos 6、常用的终端工具 tabby 7、软件卸载 腾讯柠檬:https://lemon.qq.com/ 8、…...
PyQt5 实现自定义滑块,效果还不错
最近,黄老师闲来无事,需要做一个 播放器的滑块,但是Qt官方的长这个样子,不太好看 于是我自己写了一个,效果还不错,请看下面的效果图: 功能可以点击,可以拖拽改变进度,和播放器的进度条一样 源码如下: 需要的自取 import sys from PyQt5.QtWidgets import QApplicat…...
如何在ENVI Classic 和 ENVI中进行波段合成
示例使用Landsat的三个波段进行合成为示例,合成后展示为假彩色。 对应关系为: Red -- b4(近红外 near-infrared)NIR Green -- b3 (红光 Red) Blue -- b2 (绿光 Green) 一、ENVI…...
协方差与皮尔逊相关系数:从定义到应用的全面解析
目录 一、协方差与皮尔逊相关系数的定义1.1 协方差(Covariance)1.2 皮尔逊相关系数(Pearson Correlation Coefficient) 二、协方差的定义与推导逻辑2.1 核心目标:衡量变量的“协同变化”2.2 数学表达的直观性2.3 从线性…...
ICML 2025录取率公布,spotlight posters仅占2.6%
近日,ICML 2025公布了论文录用结果。本次大会共收到 12,107篇有效论文投稿,比去年增加了28%,今年录取论文3,260篇,录取率为 26.9%。其中仅有313篇被列为“焦点海报”(即所有投稿中排名前2.6%的论文)&#x…...
kotlin一个函数返回多个值
一、主要实现方式 1. Pair/Triple 元组 用途:临时快速返回 2 或 3 个简单值,适用于简单场景语法: fun getStatus(): Pair<Int, String> {return Pair(200, "Success") // 等价于 200 to "Success" }// 解构接收 …...
Clojure 学习笔记
Clojure哲学 1.又一种Lisp? 优美、灵活、代码即数据。 实现一门程序设计语言,代码同数据一般对待,这需要语言本身具有非常强的可塑性。当语言就是以这种本质的数据结构表现时,语言本身就可以操作自己的结构和行为了。 2.函数式编…...
5.7 react 路由
react 状态管理库 14:20 react 路由(补充) 数据路由 路由hooks 路由跳转 (方法 标签/内置方法) 获取路由地址栏信息 动态路由实现(多角色权限路由) redux redux-toolkit 状态管理 antd 组件使用 1.…...
8. HTML 表单基础
表单是网页开发中与用户交互的核心组件,用于收集、验证和提交用户输入的数据。本文将基于提供的代码素材,系统讲解 HTML 表单的核心概念、常用控件及最佳实践。 一、表单的基本结构 一个完整的 HTML 表单由以下部分组成: <form action&q…...
遥感数据处理、机器学习建模与空间预测的全流程指南——涵盖R语言(随机森林、XGBoost、SVM等)、特征提取、模型优化及生态学案例分析
随机森林是一种强大的集成学习方法,特别适用于复杂的遥感数据分析。它通过构建多棵决策树并引入随机性,有效降低模型的方差和过拟合风险。在训练过程中,随机森林利用Bootstrap抽样生成多样化的训练集,并在节点分裂时随机选择特征子…...
Android 数据持久化之数据库存储 Room 框架
一、简介 Room 是 Google 推出的 Android 持久层框架,建立在 SQLite 之上,提供了一个抽象层,简化了数据库操作。它通过注解和编译时检查来确保数据操作的正确性。 Room 主要由以下三个组件组成: Entity(实体&#x…...
空间数据分析新趋势:AI 与 ArcGIS Pro 的协同创新
技术点目录 AI(DeepSeek、ChatGPT)大模型介绍及应用AI(DeepSeek、ChatGPT)支持下空间数据处理及分析功能基础AI(DeepSeek、ChatGPT)支持下空间数据选择及读取AI(DeepSeek、ChatGPT)支…...
Oracle OCP认证考试考点详解083系列10
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 46. 第46题: 题目 解析及答案: 查看以下配置: CDB1 和 CDB2 是两个容器数据库。 PDB1 是 CDB1 中的一…...
【linux常用指令】du命令
今天收到通知需要将服务器上的容量大的文件移动到大容量数据盘中。 du -sh */ | sort -h如果你想按大小排序显示文件夹,可以结合 sort 命令。这会按大小从小到大排序显示文件夹。如果想按大小从大到小排序,可以加上 -r 选项。 du -sh */ | sort -h -r...
统一返回JsonResult踩坑
定义了一个统一返回类,但是没有给Data 导致没有get/set方法,请求一直报错 public class JsonResult<T> {private int code;private String message;private T data;public JsonResult() {}public JsonResult(int code, String message, T data) {…...
MCP Client适配DeepSeek
本文是通过MCP官方的client例子进行修改,适配DeepSeek API. MCP client 先解析一下什么是MCP client。 MCP Client 是 Model Context Protocol(模型上下文协议)架构中的客户端组件,主要负责与 MCP 服务器建立和管理连接。它是一…...
物业设备管理的“多系统协同”模式:ERP、IoT与工单系统如何联动?
在智慧物业快速发展的今天,设备管理已从“被动维修”转向“主动预防”,但许多企业仍面临系统割裂、数据孤岛的困境。ERP系统记录设备台账却难实时监控,IoT设备采集数据却无法联动响应,工单系统处理流程却依赖人工流转——这些痛点…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】6.4 时间序列分析(窗口函数处理时间数据)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL时间序列分析:窗口函数处理时间数据实战一、时间序列分析核心场景与窗口函数优势1.1 业务场景需求1.2 窗口函数核心优势 二、窗口函数基础:…...
数据可视化:艺术与科学的交汇点,如何让数据“开口说话”?
数据可视化:艺术与科学的交汇点,如何让数据“开口说话”? 数据可视化,是科技与艺术的结合,是让冰冷的数字变得生动有趣的桥梁。它既是科学——讲究准确性、逻辑性、数据处理的严谨性;又是艺术——强调美感…...
IP 风险画像如何实现对恶意 IP 的有效拦截?
IP 风险画像作为一种强大的技术手段,在识别和拦截恶意 IP 方面发挥着至关重要的作用。 IP风险画像技术简介 IP 风险画像技术通过收集和分析 IP 地址的多维度信息,为每个 IP 构建详细的风险评估模型。 这些维度包括但不限于 IP 的地理位置、历史访问行…...
B树如何用于磁盘 ,B+树为如何用于数据库
B树 M阶B树:每个节点最多M个子节点,每个节点最多存M-1个Key-Value值,key以升序排序。 构建五阶B树。 那么value是干什么的呢。 先让我们介绍一下cpu 内存 磁盘的关系 我们知道了页的概念。B树用于磁盘的读取。Key是对文件进行编号ÿ…...
image-classifier开源程序Elixir是使用电脑学习对图像进行分类并从中提取数据或描述其内容,非常不错的图片整理工具
一、软件介绍 文末提供程序和源码下载 Elixir 机器学习功能构建一个应用程序,该应用程序执行图像字幕和语义搜索,以使用您的语音查找上传的图像! 二、为什么做这个程序 在构建我们的应用程序时,我们认为 images 这是一种必不…...
HarmonyOS 鸿蒙操作物联网设备蓝牙模块、扫描蓝牙、连接蓝牙和蓝牙通信
01【HarmonyOS 蓝牙】 物联网无线传输方案、HarmonyOS蓝牙数据通信之前的准备工作 02【HarmonyOS 蓝牙】配置蓝牙权限 检测 打开 关闭蓝牙 扫描蓝牙 显示蓝牙设备 03【HarmonyOS 蓝牙】连接蓝牙 发现服务 获取特征值 读取信息 写入信息 和蓝牙模块交互 04【物联网 Wifi模块…...
STM32开发GPIO
1、什么是GPIO General Purpose lnput Output,即通用输入输出端口,简称GPIO 作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出 2、GPIO特点 1,不同芯片型号,IO口数量可能不一样,可通过选型…...
【机器学习】Logistic 回归
Logistic 回归虽然名字中带有“回归”,但它实际上是一种广泛应用于 二分类问题 的线性分类算法。 Logistic 回归的核心任务是预测一个样本属于正类的概率,而概率必须在 [ 0 , 1 ] 范围内。 Logistic回归 通过将输入特征的线性组合映射到概率空间&…...
ClimateCatcher专用CDS配置教程
文章目录 API获取官网账号注册CDSAPI本地化配置 API获取官网 首先需要访问CDS官方网站,点我蓝色字直接到官网how-to-api点我蓝色字直接到官网 目前API的网页是这样的 账号注册 如果有账号的小伙伴可以直接登录自己的账号并跳转到CDSAPI本地化配置,如…...
拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT
同样的模型、不一样的答案,差距往往发生在一行 Prompt 里。本文围绕五大高频实战场景,给出可直接复制的 DeepSeek 提问框架,并穿插《DeepSeek 行业应用大全》中 64 个行业模板精华,帮助读者迅速跑赢 ChatGPT。🌟 剧透…...
【解决方案】CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道
目录 引言一、VPC Origins 的核心价值(一)安全性提升(二)运维效率优化(三)成本节约(四)全球分发能力的保留 二、VPC Origins 的架构解析(一)流量路径设计&…...