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

STM32单片机入门学习——第49节: [15-2] 读写内部FLASH读取芯片ID

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于:2025.04.29

STM32开发板学习——第49节: [15-2] 读写内部FLASH&读取芯片ID

  • 前言
  • 开发板说明
  • 引用
  • 解答和科普
  • 一、FLASH 硬件
  • 问题
  • 总结

前言

   本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
   欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
   在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
   另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!

开发板说明

   本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
   原理图如下
1、开发板原理图
在这里插入图片描述
2、STM32F103C6和51对比
在这里插入图片描述
3、STM32F103C6核心板
在这里插入图片描述

视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。

下图是实物图
在这里插入图片描述

引用

【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
在这里插入图片描述
数据手册
在这里插入图片描述

解答和科普

一、FLASH 硬件

在这里插入图片描述
工程结构:建立两个底层模块,最底层计划叫MyFLASH,在这里实现闪存最基本的3个功能,也就是读取、擦除和编程,之后,在此模块之上,在建一个模块,叫Store,主要实现参数数据的读写和存储管理,因为最终应用层想要实现的功能是,任意读写参数,并且这些参数是掉电不丢失的,至于你存在什么地方,怎么擦除,采用什么读写策略,这些不是应用层所关心的,所以Store会定义一个SRAM数组,需要掉电不丢失的参数,就写到SRAM数组里,之后调用保持的函数,这个SRAM数组就自动备份到闪存里,上电后,Store初始化, 会自动再把闪存里的数据读回SRAM数组里,这时闪存管理策略。
最后是main.c里面的应用层了,想要保持参数,就写到Store层的数组,再调用保持函数,备份到闪存,这样就能实现最终功能了。
辅助软件:stlink ultility,可以该数据,底层也是有擦除和写
选项字节,
在这里插入图片描述
Bank是加大容量

void FLASH_Unlock(void);
void FLASH_Unlock(void)
{/* Authorize the FPEC of Bank1 Access */FLASH->KEYR = FLASH_KEY1;FLASH->KEYR = FLASH_KEY2;#ifdef STM32F10X_XL/* Authorize the FPEC of Bank2 Access */FLASH->KEYR2 = FLASH_KEY1;FLASH->KEYR2 = FLASH_KEY2;
#endif /* STM32F10X_XL */
}
先写入Key1,再写入Key2.
void FLASH_Lock(void);
void FLASH_Lock(void)
{/* Set the Lock Bit to lock the FPEC and the CR of  Bank1 */FLASH->CR |= CR_LOCK_Set;#ifdef STM32F10X_XL/* Set the Lock Bit to lock the FPEC and the CR of  Bank2 */FLASH->CR2 |= CR_LOCK_Set;
#endif /* STM32F10X_XL */
}
加锁对应设置FLASH_CR的LOCK位锁住FPEC和FLASH_CR;非常的直观。对主闪存和选项字节进行擦除和编程的函数了。
FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
闪存擦除某一页;返回值高速状态;
FLASH_Status FLASH_EraseAllPages(void); 
全擦除
FLASH_Status FLASH_EraseOptionBytes(void);
擦除选项字节
status = FLASH_WaitForLastOperation(EraseTimeout);if(status == FLASH_COMPLETE){/* Authorize the small information block programming */FLASH->OPTKEYR = FLASH_KEY1;FLASH->OPTKEYR = FLASH_KEY2;/* if the previous operation is completed, proceed to erase the option bytes */FLASH->CR |= CR_OPTER_Set;FLASH->CR |= CR_STRT_Set;/* Wait for last operation to be completed */status = FLASH_WaitForLastOperation(EraseTimeout);
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
写入字
FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
写入半字
/* Wait for last operation to be completed */status = FLASH_WaitForLastOperation(ProgramTimeout);if(status == FLASH_COMPLETE){/* if the previous operation is completed, proceed to program the new data */FLASH->CR |= CR_PG_Set;*(__IO uint16_t*)Address = Data;/* Wait for last operation to be completed */status = FLASH_WaitForLastOperation(ProgramTimeout);/* Disable the PG Bit */FLASH->CR &= CR_PG_Reset;} 
#endif  /* STM32F10X_XL */

第一步,事前等待,第二步,PG位置1,第三步,Address强转为指针,再指针取内容,赋值Data,也就是在指定地址Address下,写入指定数据Data;第四步,事后等待,最后PG位恢复为0;
FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);
FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages);
FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState);
FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY);

FlagStatus FLASH_GetPrefetchBufferStatus(void);
获取预取缓存期状态
FLASH_Status FLASH_GetStatus(void);
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);
1、MyFLSAH

#include "stm32f10x.h"                  // Device headeruint32_t  MyFLASH_ReadWord(uint32_t Address)
{return  *((__IO uint32_t *)(Address)) ;}uint16_t  MyFLASH_ReadHalfWord(uint32_t Address)
{return  *((__IO uint16_t *)(Address)) ;}uint8_t  MyFLASH_ReadByte(uint32_t Address)
{return  *((__IO uint8_t *)(Address)) ;}void MyFLASH_EraseAllPages(void)
{FLASH_Unlock();FLASH_EraseAllPages();FLASH_Lock();
}void MyFLASH_ErasePages(uint32_t Address)
{FLASH_Unlock();FLASH_ErasePage(Address);FLASH_Lock();
}void MyFLASH_ProgramWord(uint32_t Address, uint32_t Data)
{FLASH_Unlock();FLASH_ProgramWord(Address,Data);FLASH_Lock();
}void MyFLASH_ProgramHalfWord(uint32_t Address, uint16_t Data)
{FLASH_Unlock();FLASH_ProgramHalfWord(Address,Data);FLASH_Lock();
}
#ifndef   __MyFLASH_H
#define   __MyFLASH_Huint32_t  MyFLASH_ReadWord(uint32_t Address);
uint16_t  MyFLASH_ReadHalfWord(uint32_t Address);
uint8_t  MyFLASH_ReadByte(uint32_t Address);void MyFLASH_EraseAllPages(void);
void MyFLASH_ErasePages(uint32_t Address);void MyFLASH_ProgramWord(uint32_t Address, uint32_t Data);
void MyFLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
#endif

2、Store

#include "stm32f10x.h"                  // Device header
#include "MyFLASH.h"#define STORE_START_ADDRESS   0x0800FC00
#define STORE_COUNT				512uint16_t  Store_Data[512];void Store_Init(void)
{if ( MyFLASH_ReadHalfWord(0x0800FC00)!= 0xA5A5 ){MyFLASH_ErasePages(0x0800FC00);MyFLASH_ProgramHalfWord(0x0800FC00,0xA5A5);for(uint16_t i=1;i<512;i++ ){MyFLASH_ProgramHalfWord(0x0800FC00+ i*2 ,0x0000);}}for(uint16_t i=0;i<512;i++ ){Store_Data[i]=MyFLASH_ReadHalfWord(0x0800FC00+ i*2 );}
}void Store_Save(void)
{MyFLASH_ErasePages(0x0800FC00);for(uint16_t i=0;i<512;i++ ){MyFLASH_ProgramHalfWord(0x0800FC00+ i*2 ,Store_Data[i]);}}void Store_Clear(void)
{for(uint16_t i=1;i<512;i++ ){Store_Data[i]=0x0000;}Store_Save();}
#ifndef    __STORE_H
#define    __STORR_Hextern uint16_t  Store_Data[];void Store_Init(void);
void Store_Save(void);
void Store_Clear(void);#endif

在这里插入图片描述在这里插入图片描述
所以这个是以小端模式读取的
在这里插入图片描述

void MyFLASH_EraseAllPages(void)
{FLASH_Unlock();FLASH_EraseAllPages();FLASH_Lock();
} 

页擦除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先,把闪存初始化一下,比如你第一次使用这个代码,那闪存默认全是FF,而参数和SRAM,一般都默认0,所以对于第一次使用,我们要给闪存的各个参数都置0,怎么判断是不是第一次使用,定义一个标志位,把闪存最后一页的第一个半字,当作标志位,判断。

if ( MyFLASH_ReadHalfWord(0x0800FC00)!= 0xA5A5 ){MyFLASH_ErasePages(0x0800FC00);MyFLASH_ProgramHalfWord(0x0800FC00,0xA5A5);for(uint16_t i=1;i<512;i++ ){MyFLASH_ProgramHalfWord(0x0800FC00+ i*2 ,0x0000);}}

第二大步,上电的时候,把闪存的数据全都转存到SRAM数组里,转存到这个数组里的过程,就是上电的时候恢复数据,实现数据掉电不丢失。
上电的时候,把闪存备份的数据,恢复到SRAM数组里,之后,我们响存储掉电不丢失的参数的时候,就先任意更改这个数组,除了标志位的其他数据,更改后之后,把这个数组,整体备份到闪存的最后一页。

梳理:
这时闪存的最后一页,直接对它读写的话,那肯定不方便,效率低,还容易丢失数据,所以在SRAM中,定义一个数组,它就是闪存的“分身”,我们再读写任何数据,就直接对SRAM操作,这样就非常方便了,但是SRAM掉电丢失,所以我们需要闪存来配合,SRAM每次更改的时候,都把数组整体备份到闪存里,而在上电的时候,再把闪存里的数据,初始化加载,回到SRAM里,这样SRAM数组,是不是就相当于掉电不丢失了。如果标志位是A5A5,就说明已经保持过了,如果不是A5A5,说明闪存是第一次使用,我们就先初始化一下,再加载数据。

在这里插入图片描述
对于出现很多次又可以修改的数据,最好使用宏定义替换一下,

程序过大影响最后一页了,可以设置不然程序影响用户存储
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、读取ID号
在这里插入图片描述
在这里插入图片描述

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "OLED.h"int main(void)
{OLED_Init();OLED_ShowString(1,1,"F_SIZE:");OLED_ShowHexNum(1,8,*((__IO uint16_t *)(0x1FFFF7E0)),4 );OLED_ShowString(2,1,"U_ID:");OLED_ShowHexNum(2,6,*((__IO uint16_t *)(0x1FFFF7E8)),4 );OLED_ShowHexNum(2,11,*((__IO uint16_t *)(0x1FFFF7E8+0x02)),4 );OLED_ShowHexNum(3,1,*((__IO uint32_t *)(0x1FFFF7E8+0x04)),8 );OLED_ShowHexNum(4,1,*((__IO uint32_t *)(0x1FFFF7E8+0x08)),8);while(1){}
}

问题

总结

读写内部FLASH&读取芯片ID

相关文章:

STM32单片机入门学习——第49节: [15-2] 读写内部FLASH读取芯片ID

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.29 STM32开发板学习——第49节: [15-2] 读写内部FLASH&读取芯片ID 前言开发板说…...

第14讲:科研图表的导出与排版艺术——高质量 PDF、TIFF 输出与投稿规范全攻略!

目录 📘 前言:导出,不只是“保存”! 🎯 一、你需要掌握的导出目标 🖼️ 二、TIFF / PNG 导出规范(适用于投稿) 🧲 三、PDF 矢量图导出(排版首选) 🧩 四、强烈推荐组合:showtext + Cairo 🧷 五、多个图的组合导出技巧 🧪 六、特殊投稿需求处理 �…...

SRIO IP调试问题记录(ready信号不拉高情况)

问题&#xff1a;调试过程中遇到有时写入数据后数据不发送&#xff0c;并且ready信号在写入一定数据后一直拉低的情况&#xff08;偶发&#xff0c;不是每次必然出现&#xff09;。buf空间设置为16时&#xff0c;写入15包数据&#xff0c;写完第16包包头后&#xff0c;ready信号…...

使用DDR4控制器实现多通道数据读写(十)

一、本章概述 本章节对目前单通道的读写功能进项测试&#xff0c;主要验证读写的数据是否正确&#xff0c;并观察该工程可以存储的最大容量。通过空满信号进行读写测试&#xff0c;根据ila抓取fifo和ddr4全部满的时刻&#xff0c;可以观察到最大容量。再通过debug逻辑可以测试读…...

从 BERT 到 GPT:Encoder 的 “全局视野” 如何喂饱 Decoder 的 “逐词纠结”

当 Encoder 学会 “左顾右盼”&#xff1a;Decoder 如何凭 “单向记忆” 生成丝滑文本&#xff1f; 目录 当 Encoder 学会 “左顾右盼”&#xff1a;Decoder 如何凭 “单向记忆” 生成丝滑文本&#xff1f;引言一、Encoder vs Decoder&#xff1a;核心功能与基础架构对比1.1 本…...

探寻软件稳定性的奥秘

在软件开发的广袤领域中&#xff0c;软件的稳定性宛如基石&#xff0c;支撑着整个软件系统的运行与发展。《发布&#xff01;软件的设计与部署》这本书的第一部分&#xff0c;对软件稳定性进行了深入且全面的剖析&#xff0c;为软件开发人员、架构师以及相关从业者们提供了极具…...

Reverse-WP记录9

前言 之前写的&#xff0c;一直没发&#xff0c;留个记录吧&#xff0c;万一哪天记录掉了起码在csdn有个念想 1.easyre1 32位无壳elf文件 shiftF12进入字符串&#xff0c;发现一串数字&#xff0c;双击进入 进入main函数 int __cdecl main(int argc, const char **argv, const…...

日常开发小Tips:后端返回带颜色的字段给前端

一般来说&#xff0c;展示给用户的字体格式&#xff0c;都是由前端控制&#xff0c;展现给用户&#xff1b; 但是当要表示某些字段的数据为异常数据&#xff0c;或者将一些关键信息以不同颜色的形式呈现给用户时&#xff0c;而前端又不好判断&#xff0c;那么就可以由后端来控…...

partition_pdf 和chunk_by_title 的区别

from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有点像&#xff0c;都在"分块"&#xff0c;但是它们的本质完全不一样。 先看它们核心区别 partition_pdfchun…...

JAVA-使用Apache POI导出数据到Excel,并把每条数据的图片打包成zip附件项

最近项目要实现一个功能&#xff0c;就是在导出报表的时候 &#xff0c;要把每条数据的所有图片都要打包成zip附件在excel里一起导出。 1. 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…...

前端——CSS1

一&#xff0c;概述 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff08;级联样式表&#xff09; css是一种样式表语言&#xff0c;为html标签修饰定义外观&#xff0c;分工不同 涉及&#xff1a;对网页的文字、背景、宽、高、布局进行修饰 分为内嵌样式表&…...

《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制

[精华]第40篇&#xff1a;长文本处理技巧&#xff1a;克服大模型的上下文长度限制 摘要 在大语言模型应用中处理超出其上下文窗口长度的长文本是一项挑战。本文面向初学者介绍长文本处理的常见难题&#xff0c;以及一系列有效策略和技巧&#xff0c;包括如何对文档进行合理分…...

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…...

千问3(Qwen3)模型开源以及初体验

体验地址&#xff1a;百炼控制台 1 千问3模型&#xff1a;全球最强开源大模型震撼发布 2025年4月29日&#xff0c;阿里巴巴正式开源了新一代通义千问模型Qwen3&#xff08;简称千问3&#xff09;&#xff0c;这一里程碑式的事件标志着中国开源大模型首次登顶全球性能榜首。千问…...

对 FormCalc 语言支持较好的 PDF 编辑软件综述

FormCalc是一种专为PDF表单计算设计的脚本语言&#xff0c;主要应用于Adobe生态及SAP相关工具。以下是对FormCalc支持较好的主流软件及其特点&#xff1a; 1. Adobe LiveCycle Designer 作为FormCalc的原生开发环境&#xff0c;LiveCycle Designer提供最佳支持&#xff1a; …...

20250429-李彦宏口中的MCP:AI时代的“万能接口“

目录 一、什么是MCP&#xff1f; 二、为什么需要MCP&#xff1f; 三、MCP的工作原理 3.1 核心架构 3.2 工作流程 四、MCP的应用场景 4.1 开发者工具集成 4.2 智能助手增强 4.3 企业应用集成 4.4 典型案例 五、MCP的技术特点 5.1 标准化接口 5.2 可扩展性设计 5.…...

汽车启动原理是什么?

好的&#xff01;同学们&#xff0c;今天我们来讨论汽车的启动原理&#xff0c;重点分析其中的动力来源和摩擦力作用。我会结合物理概念&#xff0c;用尽量直观的方式讲解。 1. 汽车为什么会动&#xff1f;——动力的来源 汽车发动机&#xff08;内燃机或电动机&#xff09;工…...

LeetCode[347]前K个高频元素

思路&#xff1a; 使用小顶堆&#xff0c;最小的元素都出去了&#xff0c;省的就是大&#xff0c;高频的元素了&#xff0c;所以要维护一个小顶堆&#xff0c;使用map存元素高频变化&#xff0c;map存堆里&#xff0c;然后输出堆的东西就行了 代码&#xff1a; class Solution…...

《软件测试52讲》学习笔记:如何设计一个“好的“测试用例?

引言 在软件测试领域&#xff0c;设计高质量的测试用例是保证软件质量的关键。本文基于茹炳晟老师在《软件测试52讲》中关于测试用例设计的讲解&#xff0c;结合个人学习心得&#xff0c;系统总结如何设计一个"好的"测试用例。 一、什么是"好的"测试用例…...

【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析

ISP芯片及其功能概述 ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的…...

QtCreator Kits构建套件报错(红色、黄色感叹号)

鼠标移动上去&#xff0c;查看具体报错提示。 一.VS2022Qt5.14.2(MSVC2017) 环境VS2022Qt5.14.2(MSVC2017) 错误&#xff1a;Compilers produce code for different ABIs&#xff1a;x86-windows-msvc2005-pe-64bit&#xff0c;x86-windows-msvc2005-pe-32bit 错误&#xff1…...

天能资管(SkyAi):全球布局,领航资管新纪元

在全球化浪潮汹涌澎湃的今天,资管行业的竞争已不再是单一市场或区域的较量,而是跨越国界、融合全球资源的全面竞争。天能资管(SkyAi),作为卡塔尔投资局(Qatar Investment Authority,QIA)旗下的尖端科技品牌,正以其独特的全球视野和深远的战略眼光,积极布局资管赛道,力求在全球资…...

基于PHP的宠物用品商城

有需要请加文章底部Q哦 可远程调试 基于PHP的宠物用品商城 一 介绍 宠物用品商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap&#xff0c;jquery.js等。系统角色分为用户和管理员。(附带参考文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvsc…...

桂链:使用Fabric的测试网络

桂链是基于Hyperledger Fabric开源区块链框架扩展开发的区块链存证平台&#xff0c;是桂云网络&#xff08;OSG&#xff09;公司旗下企业供应链、流程审批等场景数字存证软件产品&#xff0c;与桂花流程引擎&#xff08;Osmanthus&#xff09;并列为桂云网络旗下的标准与可定制…...

k8s术语master,node,namepace,LABLE

1.Master Kubernetes中的master指的是集群控制节点,每个kubernetes集群里都需要有一个Master节点来负责整个集群的管理和控制,基本上kubernetes的所有控制命令都发给它,它来负责具体的执行过程。Master节点通常会占据一个独立的服务器(高可用建议3台服务器)。 Master节点…...

香港科技大学广州|智能制造学域硕、博研究生招生可持续能源与环境学域博士招生宣讲会—四川大学专场!

香港科技大学广州&#xff5c;智能制造学域硕、博研究生招生&可持续能源与环境学域博士招生宣讲会—四川大学专场&#xff01;&#xff01;&#xff01; 两个学域代表教授亲临现场&#xff0c;面对面答疑解惑助攻申请&#xff01;可带简历现场咨询和面试&#xff01; &am…...

【Vue】 实现TodoList案例(待办事项)

目录 组件化编码流程&#xff08;通用&#xff09; 1.实现静态组件&#xff1a;抽取组件&#xff0c;使用组件实现静态页面效果 2.展示动态数据&#xff1a; 1. 常规 HTML 属性 3.交互——从绑定事件监听开始 什么时候要用 event&#xff1a; 什么时候不需要用 event&am…...

Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy

目录 1&#xff0c;安装前须知 2&#xff0c;安装过程 2.1&#xff0c;设置语言环境 ​2.2&#xff0c;设置源 ​2.3&#xff0c;安装ROS 2软件包 2.4&#xff0c;​环境设置 ​​2.5&#xff0c;测试 2‍.6&#xff0c;不想每次执行source 检验是否成功&#xff08;另…...

【Unity】使用LitJson保存和读取数据的例子

LitJson 是一个轻量级的 JSON 解析和生成库&#xff0c;广泛应用于 .NET 环境中。 优点&#xff1a;轻量级&#xff0c;易用&#xff0c;性能优秀&#xff0c;支持LINQ和自定义对象的序列化和反序列化。 public class LitJsonTest : MonoBehaviour { // Start is called before…...

飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)

飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09; 目录 飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 …...

物联网平台厂商有哪些?2025物联网平台推荐?国内有哪些比较好的物联网平台?

评选维度&#xff1a; 技术实力&#xff1a;涵盖设备接入规模、数据处理效率、AI/边缘计算融合能力、协议兼容性及平台架构先进。 应用场景&#xff1a;包括垂直领域解决方案的成熟度、定制化能力、跨行业复用性及实际落地案例规模。 安全可靠&#xff1a;涉及数据传输加密、…...

瑞幸咖啡披露2025年Q1财报:门店净增1757家,营业利润率达8.3%

4月29日&#xff0c;瑞幸咖啡&#xff08;OTC&#xff1a;LKNCY&#xff09;公布2025年第一季度财报。数据显示&#xff0c;2025年第一季度总净收入88.65亿元人民币&#xff0c;同比增长41.2%&#xff0c;GMV达103.54亿元人民币。截止一季度末&#xff0c;门店总数达24097家。依…...

selenium IDE脚本如何转换为可运行的selenium webdriver java程序

上一篇博客&#xff08;用selenium4 webdriver java 搭建并完成第一个自动化测试脚本-CSDN博客&#xff09;介绍了如何创建一个selenium webdriver 的java工程。 之前博客&#xff08;​​​​​​带你用selenium IDE的录制第一个自动化测试脚本也介绍了如何使用selenum ide …...

GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,作者:机器学习之心

GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断 目录 GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断&#xff0c;运行环境M…...

LeetCode热题100--53.最大子数组和--中等

1. 题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…...

【计算机视觉】深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南

深度解析MediaPipe&#xff1a;谷歌跨平台多媒体机器学习框架实战指南 技术架构与设计哲学核心设计理念系统架构概览 核心功能与预构建解决方案1. 人脸检测2. 手势识别3. 姿势估计4. 物体检测与跟踪 实战部署指南环境配置基础环境准备获取源码 构建第一个示例&#xff08;手部追…...

血管造影正常≠心脏没事!无创技术破解心肌缺血漏诊困局

提到冠心病检查&#xff0c;很多人会纠结&#xff1a;到底哪项检查能更全面地反映病情、精准得出结论&#xff1f; 从准确性来说&#xff0c;冠脉 CT 与冠脉造影是临床常用手段。二者虽然能够清晰显示血管大冠脉是否存在狭窄或斑块&#xff0c;但二者本质上有相同的 “局限性”…...

ClickHouse副本集群

每个节点安装clickhouse服务安装 zookeeper每个节点修改 /etc/clickhouse-server/config.xml 863行左右 <remote_servers><default><shard><replica><host>18.1.13.30</host><port>9000</port></replica><replica&g…...

Go 语言中的 `os.Truncate` 函数详解

os.Truncate 是 Go 标准库中用于修改文件大小的函数。下面我将全面解析这个函数的功能、用法和注意事项。 函数签名 func Truncate(name string, size int64) error核心功能 os.Truncate 用于&#xff1a; 将指定文件截断或扩展到指定大小处理符号链接时会操作链接指向的实…...

java 加入本地lib jar处理方案

在 Java 项目中&#xff0c;如果想将本地的 .jar 文件加入到 Maven 构建流程中&#xff0c;有以下几种常见方式可以选择&#xff1a; ✅ 推荐方式&#xff1a;将本地 JAR 安装到本地 Maven 仓库 这是最佳实践。通过 mvn install:install-file 命令把JAR 包安装到本地仓库&…...

【Git】之【Get】TortoiseGit不显示状态图标

参考&#xff1a;Windows中解决TortoiseGit 不显示状态图标的问题 实测可行。 打开注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers路径 确保TortoiseGit文件夹在前几个&#xff0c;可以重命名将其他无关…...

[Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装

目录 1.再谈网络转发 2.路由 举个例子 3.分片和组装 IP 层 [Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器 1.再谈网络转发 我们在上一篇文章中知道了路由器的功能有&#xff1a; 转发DHCP | 组建局域网NAT 组建局域网功能表现&…...

Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读

《Sce2DriveX: A Generalized MLLM Framework for Scene-to-Drive Learning》2025年2月发表&#xff0c;来自中科院软件所和中科院大学的论文。 端到端自动驾驶直接将原始传感器输入映射到低级车辆控制&#xff0c;是Embodied AI的重要组成部分。尽管在将多模态大语言模型&…...

论文笔记-多智能体任务分配:动态智能空间中的拍卖与抢占机制

《IET Cyber-Systems and Robotics》出版中国电信研究院 Wei Li、Zhenhua Liu 团队与山东大学 Jianhang Shang 和 Guoliang Liu 团队的研究成果&#xff0c;文章题为“Multiagent Task Allocation for Dynamic Intelligent Space: Auction and Preemption With Ontology Knowle…...

数据库day-08

一、实验名称和性质 删除修改数据 验证 设计 二、实验目的 1&#xff0e;掌握数据操作-- 删除、修改&#xff1b; 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机&#xff08;单机&#xff09; 使用的软件名称、版本号以及模块&#xff1a; Windows 10&#x…...

.NET 平台详解

什么是 .NET&#xff1f; .NET 是一个由微软开发的跨平台、开源的开发者平台&#xff0c;用于构建多种类型的应用程序。它提供了一致的编程模型和丰富的类库&#xff0c;支持多种编程语言&#xff08;如 C#、F#、Visual Basic&#xff09;。 .NET 的核心组成 运行时环境 CLR …...

高效 Transformer 的综述

20年9月来自谷歌研究的论文“Efficient Transformers: A Survey”。 文章主要针对一类X-former模型&#xff0c;例如Reformer, Linformer, Performer, Longformer为例&#xff0c;这些对原版Transformer做了改进&#xff0c;提高了其计算和内存的效率。 self-attention是Tran…...

java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】

1.日志记录注解&#xff08;LogRecord&#xff09; Repeatable(LogRecords.class) Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface LogRecord {String success();String fail() default "&q…...

HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(二、元服务与应用APP签名打包步骤详解)

在HarmonyOS应用开发过程中&#xff0c;发布应用到应用市场是一个重要的环节。没经历过的童鞋&#xff0c;首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请&#xff0c;混在一起分不清。其实搞清楚后也就那会事&#xff0c;各个文件都有它存在的作…...

java的多线程

文章目录 创建线程什么是线程&#xff1f;什么是多线程&#xff1f;如何在程序中创建出多条线程&#xff1f;方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runnable接口方式三&#xff1a;实现Callable接口 三种创建方式的对比 线程的常用方法Thread提供的常用方法Thr…...