STM32 FSMC/FMC接口配置与调试:从时序参数到实战应用

news2026/5/19 11:11:42
1. 项目概述为什么FSMC/FMC是STM32开发者绕不开的“硬骨头”在STM32的众多外设中FSMCFlexible Static Memory Controller灵活静态存储器控制器及其升级版FMCFlexible Memory Controller灵活存储器控制器绝对算得上是让开发者又爱又恨的一个模块。爱它是因为它提供了连接外部并行总线设备的“高速公路”能轻松驱动LCD屏、SRAM、NOR Flash、PSRAM等极大地扩展了MCU的存储和显示能力。恨它则是因为其配置寄存器繁多、时序关系复杂、硬件布线讲究稍有不慎轻则数据读写异常重则整个外设无法工作调试过程往往让人抓狂。我接触过不少项目从智能家居的TFT屏显示到工业HMI的复杂界面再到需要大容量缓存的图像处理设备FSMC/FMC都是核心桥梁。很多工程师在初步学习时往往只停留在“复制例程修改参数”的层面一旦遇到时序不匹配、屏幕花屏、数据丢失等问题就陷入困境。这个接口的难点本质上在于它不是一个简单的GPIO模拟而是一个需要软硬件深度协同的、真正的“控制器”。你需要理解总线协议、时序参数的计算、地址映射的规则甚至PCB布局布线的影响。今天我就结合自己踩过的坑和解决过的实际问题把这根“硬骨头”拆开揉碎了讲清楚目标是让你不仅能配置通更能理解透出了问题自己能定位。2. 核心难点拆解FSMC/FMC到底难在哪里2.1 概念混淆FSMC与FMC的关系与区别首先必须理清概念这是避免后续配置混乱的基础。FSMC是STM32F1系列以及部分F4系列早期型号配备的模块。而FMC是STM32F2/F4/F7/H7等系列使用的增强版模块。它们核心功能相似都是用于控制外部并行存储器但FMC能力更强。主要区别在于支持存储类型FSMC主要支持NOR Flash/PSRAM、SRAM和LCD通过8080/6800模式。FMC在此基础上额外支持了SDRAM和NAND Flash。如果你的项目需要连接大容量的SDRAM做帧缓冲区那就必须选择带有FMC的高性能型号如F429、F767、H743等。存储块Bank划分FSMC将1GB的地址空间划分为4个独立的256MB BankBank1~Bank4。FMC的Bank划分更灵活通常Bank1用于NOR/PSRAM/SRAMBank2~3用于NANDBank4~?用于SDRAM具体取决于型号。数据总线宽度FMC通常支持更宽的数据总线与SDRAM接口时能发挥更大优势。寄存器配置FMC的寄存器组更庞大和复杂尤其是配置SDRAM时序的部分。注意很多教程和资料将二者混为一谈直接用F1的FSMC例程去套F4的FMC这是导致配置失败的一个常见原因。务必先确认你芯片的数据手册中关于该控制器的章节标题是“FSMC”还是“FMC”。2.2 地址映射CPU是如何看到外部设备的这是理解FSMC/FMC工作原理的钥匙。MCU的CPU内核如Cortex-M3/M4通过AHB总线访问内存。FSMC/FMC作为一个挂在AHB总线上的外设它内部有一套“地址重映射”机制。当CPU访问一个特定的内部存储器地址范围例如0x6000 0000 ~ 0x6FFF FFFF时FSMC/FMC模块会被激活。它并不是真的去读这个不存在的内部地址而是将这个内部地址转换为一组并行的控制信号地址线、数据线、片选、读写使能等发送到芯片引脚上。以FSMC连接一个16位宽的NOR Flash为例我们将其配置在Bank1的第四个片区对应基址0x6C00 0000。当CPU执行一条指令读取*(volatile uint16_t*)(0x6C000000)这个地址的数据时FSMC会将片选信号NE4对应Bank1的第四个片区拉低。将地址总线A[25:0]注意这里地址线是字节寻址对于16位设备需要右移一位输出对应的值。将读使能NOE拉低。等待外部设备将数据放到数据总线D[15:0]上。在设定的时间后采样数据总线将数据返回给CPU。难点在于这个“内部地址”到“外部信号”的映射关系需要开发者通过配置寄存器来精确设定包括数据宽度8/16位、地址与数据线的复用模式、以及最重要的——时序参数。2.3 时序参数配置寄存器里那一堆“Setup/Hold/Wait”到底是什么时序配置是问题的核心也是调试中最耗时的部分。FSMC/FMC用几个关键的寄存器位域来模拟读写时序它们直接对应了外部设备数据手册上的时序图。我们以FSMC的NOR/PSRAM/SRAM模式模式1即模式A的读时序为例看几个关键参数ADDSETAddress Setup Time地址建立时间。在片选和读使能有效之前地址信号需要保持稳定的最小时间。对应设备手册的t_{AS}。DATASTData Setup Time数据建立时间。从读使能有效到FSMC采样数据总线之间的最小时间。这是最关键的参数必须大于等于外部设备从读使能有效到数据输出有效的时间t_{OE}并留有一定余量。ADDHLDAddress Hold Time地址保持时间。在读写操作结束后地址信号继续保持稳定的时间。通常可以设为0或1。在HAL库中这些参数被封装在一个结构体里例如SRAM_TimingTypeDef。很多新手直接填一个很大的值比如0xFF觉得这样“更安全”。这确实可能让设备工作但会严重降低总线访问效率。正确的做法是仔细查阅你所连接设备如LCD驱动IC ILI9341、SRAM芯片IS62WV51216的数据手册找到对应的AC交流特性参数表根据MCU的时钟频率HCLK计算出最小需要的时钟周期数。计算示例假设HCLK 72MHz则一个HCLK周期约13.9ns。外部SRAM的t_{OE}输出使能到数据有效最大值为25ns。那么DATAST需要满足的纳秒数至少为25ns。换算成HCLK周期数25ns / 13.9ns ≈ 1.8个周期。由于寄存器配置的是周期数整数且需要留有余量通常20%-30%我们向上取整并加一点余量可以配置DATAST 3即约41.7ns。这种基于手册的计算才是可靠配置的基础。盲目套用例程的数值一旦换用不同型号的屏幕或存储器或者改变MCU主频就可能失败。3. 实战配置解析以驱动8080并口LCD为例我们以一个最典型的应用——使用FSMC驱动16位8080并行接口的TFT液晶屏如ILI9341为例详解配置步骤和每个参数的意义。3.1 硬件连接与原理图设计要点硬件是软件工作的前提错误的硬件设计会让软件调试无从下手。FSMC信号线对应关系以Bank1为例16位数据宽度FSMC_D[15:0]- LCDD[15:0](16位双向数据总线)FSMC_A[地址线]- LCDRS(寄存器/数据选择线)。这里是个关键技巧8080接口的RS或叫D/C、A0线只有0和1两个状态我们不需要完整的地址线。通常选择一根地址线如FSMC_A16连接RS。当CPU访问某个地址时A16的电平高低就决定了这次访问是命令RS0还是数据RS1。FSMC_NE[x]- LCDCS(片选信号)。选择使用Bank1下的哪个片区NE1~NE4。FSMC_NWE- LCDWR(写使能)FSMC_NOE- LCDRD(读使能)可选FSMC_NBL[1:0]- 在16位模式下用于字节选择驱动LCD时通常不用。硬件设计避坑指南上拉电阻FSMC的数据线D[15:0]和读写控制线建议在靠近MCU端放置4.7k~10k的上拉电阻。这有助于提高信号质量尤其在总线空闲时保持稳定电平避免因引脚浮空引入噪声。电源与地确保为LCD模块提供干净、充足的电源电源引脚附近务必放置足够如10uF0.1uF的退耦电容。布线等长对于高速运行如HCLK超过100MHz或连接SDRAM时数据线组和地址线组应尽量保持等长布线以减少信号偏移。对于普通LCD驱动通常频率在几MHz到十几MHz要求可适当放宽但也应避免走线过长或绕来绕去。3.2 软件配置从CubeMX到代码详解步骤一CubeMX图形化配置在Connectivity或Multimedia下找到FSMC或FMC。选择模式对于8080 LCD选择LCD Interface或Nor Flash/PSRAM/SRAM并选择正确的Bank例如Bank 1 NOR/PSRAM 1。配置数据宽度16 Bits。配置时序参数这是核心。根据LCD数据手册配置。对于常见的ILI9341在72MHz下一个比较通用的起始配置可以是Address Setup Time 1 (约13.9ns)Data Setup Time 15 (约208ns)注意这个值较大是为了兼容性后续可优化Bus Turn Around Time 0Access ModeMode A(这是最常用的8080模式)配置引脚检查自动分配的引脚是否与你的原理图一致尤其是RS信号对应的地址线如A16。步骤二生成代码与关键结构体分析生成代码后在main.c中会看到HAL库对FSMC的初始化。我们需要关注的是时序结构体和句柄。// 定义FSMC的NOR SRAM时序结构体 SRAM_TimingTypeDef sram_timing {0}; // 定义FSMC的NOR SRAM句柄 SRAM_HandleTypeDef hsram {0}; // 在初始化函数中会填充这些结构体 sram_timing.AddressSetupTime 1; // ADDSET sram_timing.AddressHoldTime 0; // ADDHLD sram_timing.DataSetupTime 15; // DATAST - 最关键 sram_timing.BusTurnAroundDuration 0; sram_timing.CLKDivision 0; sram_timing.DataLatency 0; sram_timing.AccessMode FSMC_ACCESS_MODE_A; // 模式A hsram.Instance FSMC_NORSRAM_DEVICE; hsram.Extended FSMC_NORSRAM_EXTENDED_DEVICE; hsram.Init.NSBank FSMC_NORSRAM_BANK1; // 使用Bank1 hsram.Init.DataAddressMux FSMC_DATA_ADDRESS_MUX_DISABLE; hsram.Init.MemoryType FSMC_MEMORY_TYPE_SRAM; // 虽然接LCD但模式选SRAM hsram.Init.MemoryDataWidth FSMC_NORSRAM_MEM_BUS_WIDTH_16; // ... 其他初始化配置 hsram.Init.WriteTimingStruct sram_timing; // 写时序 hsram.Init.ReadTimingStruct sram_timing; // 读时序通常可设为相同步骤三定义访问宏与函数为了方便操作我们定义两个宏对应LCD的命令和数据寄存器地址。// 假设我们使用Bank1, NE4 (对应基址0x6C000000) RS接A16 // 当A160时是命令地址A161时是数据地址。 // 所以命令地址 基址 (0 16) 0x6C000000 // 数据地址 基址 (1 16) 0x6C010000 #define LCD_COMMAND_ADDR ((uint32_t)0x6C000000) #define LCD_DATA_ADDR ((uint32_t)0x6C010000) // 写命令函数 void LCD_Write_Cmd(uint16_t cmd) { *(__IO uint16_t *)(LCD_COMMAND_ADDR) cmd; } // 写数据函数 void LCD_Write_Data(uint16_t data) { *(__IO uint16_t *)(LCD_DATA_ADDR) data; } // 读数据函数如果需要 uint16_t LCD_Read_Data(void) { return *(__IO uint16_t *)(LCD_DATA_ADDR); }这样LCD_Write_Cmd(0x2A);和LCD_Write_Data(0x0050);这样的操作就会被FSMC模块自动翻译成正确的并行时序波形发送到LCD屏上。4. 高级话题与性能优化4.1 读写时序分离配置在上面的例子中读写时序用了同一个结构体sram_timing。但很多外部存储设备的读时序和写时序要求是不同的。例如NOR Flash的写操作通常比读操作慢得多。为了获得最佳性能FSMC/FMC支持为读和写操作配置独立的时序参数。在HAL库中这非常简单SRAM_TimingTypeDef read_timing {0}; SRAM_TimingTypeDef write_timing {0}; // 分别配置读时序和写时序 read_timing.AddressSetupTime 1; read_timing.DataSetupTime 5; // 读可能更快 write_timing.AddressSetupTime 1; write_timing.DataSetupTime 10; // 写需要更长时间 hsram.Init.ReadTimingStruct read_timing; hsram.Init.WriteTimingStruct write_timing;分别优化读写时序可以在保证稳定的前提下最大化总线吞吐率。4.2 使用DMA配合FSMC/FMC进行大数据块传输当需要刷全屏图片或填充大块显存时如果使用CPU循环调用LCD_Write_Data会长时间占用CPU。此时DMA直接存储器访问是绝佳的帮手。思路将待显示的数据如图像数组存放在内存如内部SRAM中然后配置DMA将这块内存的数据自动地、不间断地搬运到FSMC映射的LCD数据地址LCD_DATA_ADDR上。在此期间CPU可以被释放出来处理其他任务。配置关键点DMA数据流/通道选择支持“存储器到外设”传输的DMA流并将其目标外设地址设置为LCD_DATA_ADDR。数据宽度对齐确保DMA的源内存、目标FSMC数据宽度一致均为半字/16位。外设流控制对于FSMC通常不使用外设流控制而是使用DMA的“普通模式”或“循环模式”单次传输大量数据用普通模式。触发时机DMA传输由软件触发启动。一旦启动DMA会接管总线高效完成数据传输。一个常见的误区有人试图用DMA从FSMC读取数据如从外部SRAM读数到内部内存但配置了错误的突发传输模式或数据宽度导致读取的数据错位。务必仔细核对DMA和FSMC双方的数据宽度、地址增量设置。4.3 FMC驱动SDRAM的特殊配置对于FMC驱动SDRAM复杂度再上一个台阶。SDRAM有复杂的初始化序列预充电、加载模式寄存器、自动刷新等并且需要定期刷新以保持数据。关键配置步骤时钟与引脚配置SDRAM需要额外的时钟信号SDCLK、时钟使能CKE、片选SDNE、Bank地址BA[1:0]等。在CubeMX中需要正确分配。时序结构体FMC为SDRAM提供了专门的时序结构体FMC_SDRAM_TimingTypeDef包含LoadToActiveDelaytRCD、ExitSelfRefreshDelaytRAS等与SDRAM芯片手册一一对应的参数。初始化序列不能像SRAM那样配置完时序就完事。必须严格按照SDRAM芯片要求的顺序通过FMC发送一系列命令发送CLOCK_CONFIGURATION命令使能时钟。等待一定延时通常100us。发送PRECHARGE_ALL命令。发送多个AUTO_REFRESH命令通常2-8次。发送LOAD_MODE_REGISTER命令配置模式寄存器决定突发长度、CAS延迟等。最后将FMC SDRAM控制器设置为Normal模式。刷新管理需要在初始化时配置好刷新速率根据SDRAM芯片的刷新周期和FMC时钟计算并确保FMC的自动刷新功能被正确使能。实操心得调试SDRAM时建议先使用芯片厂商如Micron, ISSI提供的官方初始化代码片段再结合STM32的HAL库进行适配。先用最简单的读写测试如写一个地址再读回验证基本功能再进行大规模的数据吞吐测试。逻辑分析仪或示波器观察SDCLK、RAS、CAS、WE等关键控制信号的波形是排查硬件问题的利器。5. 调试技巧与常见问题排查实录即使配置看似正确实际调试中仍会遇到各种问题。下面是一个常见问题排查清单。现象可能原因排查思路与解决方法屏幕白屏或完全不亮1. 电源或背光问题。2. 复位信号未正确初始化。3. FSMC时钟未使能。4. 片选NE引脚错误或未拉低。1. 用万用表测量LCD模块供电电压和背光电压。2. 检查LCD的RST引脚是否被正确拉高或执行了复位序列。3. 检查__HAL_RCC_FSMC_CLK_ENABLE()是否被调用。4. 用示波器或逻辑分析仪观察NECS信号在访问期间是否有效。屏幕花屏、错位、颜色异常1.时序参数DATAST配置不当这是最常见原因。2. 数据线D[15:0]连接错误或虚焊。3. RS地址线映射错误导致命令和数据错乱。4. 初始化序列LCD驱动IC的寄存器配置有误。1.逐步增大DataSetupTime看现象是否改善。这是最有效的“试错”法。2. 检查硬件连接特别是数据线高低字节是否接反D0-D15。3. 确认LCD_COMMAND_ADDR和LCD_DATA_ADDR的计算是否正确取决于你接哪根地址线到RS。4. 核对LCD驱动IC的数据手册确保发送了正确的初始化命令序列如ILI9341、SSD1963等各有不同。读写外部SRAM数据错误1. 读写时序不满足芯片要求。2. 地址线连接错误访问错位。3. 数据宽度配置错误如芯片是8位配置成16位。4. 使用了Cache但未处理一致性问题在F4/F7/H7系列常见。1. 依据SRAM数据手册重新计算时序特别是t_{RC}读周期时间和t_{WC}写周期时间。2. 编写一个简单的测试程序向连续地址写入递增数据如0x0001, 0x0002...再读回验证。3. 检查FSMC_NBL[1:0]字节使能信号在8位模式下是否需要特殊处理。4. 如果使能了D-Cache在DMA传输或CPU直接访问FSMC映射区域前后需要调用SCB_CleanDCache_by_Addr()等函数清理缓存。使用DMA刷屏时图像撕裂或错乱1. DMA传输完成中断中未等待LCD显示准备好就开始了下一次传输。2. DMA传输的数据量数组大小计算错误。3. 内存缓冲区地址或数据地址未按字对齐导致DMA传输错误。1. 在DMA传输完成中断中加入对LCD“忙”状态的查询如果支持或插入适当的延时。2. 确认图像数组大小 宽度 * 高度。对于16位色每个像素占2字节。3. 确保用于DMA传输的内存数组地址是4字节对齐的可以使用__attribute__((aligned(4)))定义数组。FMC驱动SDRAM不稳定随机出错1. SDRAM初始化序列不完整或错误。2. 刷新率配置错误。3. PCB布线质量差信号完整性不好。4. 时序参数过于极限未留余量。1. 逐条核对SDRAM初始化命令确保顺序和参数完全正确。2. 根据SDRAM芯片的刷新周期如64ms / 8192行和FMC时钟重新计算刷新计数值。3. 检查电源纹波在SDRAM电源引脚附近增加高质量退耦电容如多个0.1uF10uF。4. 适当增加时序参数特别是tRCD、tRP等关键参数。一个真实的调试案例我曾遇到一个项目使用FMC驱动SDRAM在常温下测试一切正常但高温老化试验时会出现零星的数据错误。排查后发现是SDRAM的CAS LatencyCL在初始化时被设置为了2但该型号SDRAM在高温下在给定的时钟频率下无法稳定工作在CL2。将CL改为3后问题彻底解决。教训时序参数不能只看常温下的“能用”必须考虑电压、温度、工艺偏差等最坏情况并留足余量。6. 总结与进阶思考FSMC/FMC是一个功能强大但需要精心对待的模块。掌握它的核心在于三点理解内存映射的本质、学会用时序参数匹配外设要求、善用工具进行软硬件协同调试。从简单的LCD驱动到复杂的SDRAM应用其原理一脉相承。对于追求极致性能的应用还可以深入研究总线矩阵与仲裁当CPU、DMA、DMA2D等多个主机同时访问FSMC/FMC时总线仲裁是如何工作的如何优化访问优先级以减少冲突FMC的扩展模式FMC支持“扩展模式”允许更灵活地配置控制信号以适配一些非标准的存储器接口。与LTDCLCD-TFT显示控制器的配合在STM32F4/F7/H7系列中可以直接用FMC为LTDC提供显存SDRAM实现硬件图形加速和图层叠加这是构建复杂GUI系统的基石。我个人习惯在项目初期就用逻辑分析仪抓取FSMC/FMC关键引脚的波形与数据手册的时序图进行比对。这虽然多花一点时间但能从根本上确保硬件设计和软件配置的正确性避免后期出现玄学问题。记住对于并行总线波形是不会骗人的。当你真正看懂了那些高低电平变化的时序你对FSMC/FMC的理解就从一个“配置者”变成了一个“驾驭者”。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…