SX1262 LoRa模块驱动开发与实战:从SPI通信到TCXO配置全解析
1. 项目概述Core1262-868M LoRa模块深度解析最近在做一个物联网边缘节点的项目选型时再次用到了Semtech的SX1262这颗经典的LoRa芯片。市面上基于它的模块很多但“Core1262-868M”这个型号以其高集成度和稳定性在很多对通信可靠性要求苛刻的场景里成了我的首选。这不仅仅是一个简单的“射频收发模块”它集成了LoRa物理层调制解调、射频前端、甚至高精度的TCXO温度补偿晶体振荡器通过SPI接口与主控MCU对话把复杂的无线通信简化成了一组寄存器配置和数据收发操作。如果你正在为智能表计、环境监测、智慧农业或资产追踪这类需要远距离、低功耗通信的项目寻找无线方案那么深入理解这个模块就相当于掌握了LoRa应用开发的半壁江山。这篇文章我就结合自己多次踩坑和实战的经验从硬件设计到软件驱动为你拆解Core1262-868M的核心让你不仅能用它更能懂它。2. 核心芯片与硬件架构深度剖析2.1 SX1262LoRa通信的“心脏”SX1262是Semtech公司推出的第二代超远距离、低功耗LoRa收发器芯片。相较于第一代的SX127x系列它在功耗、接收灵敏度和抗干扰能力上都有显著提升。其核心价值在于实现了LoRa调制解调的全部物理层功能。LoRa调制技术浅析很多人知道LoRa通信距离远但未必清楚其原理。你可以把它想象成一种“慢速而坚韧”的通信方式。它通过一种称为“啁啾扩频”Chirp Spread Spectrum, CSS的技术将数据信号扩展到一个更宽的频带上传输。这就好比你要运送一件易碎品数据LoRa不是用一辆快车高数据速率在颠簸的路上狂奔而是用一队慢速但结实的马车扩频后的信号分散在宽阔的路面上前进。即使部分路面被干扰噪声其他马车依然能安全抵达接收端再将这些信号重新聚合起来。这种机制赋予了LoRa极强的抗干扰能力和出色的接收灵敏度低至-148 dBm代价就是数据速率较低通常几百bps到几十kbps非常适合小数据包、间歇性通信的物联网场景。SX1262内部集成了完整的射频收发链路包括功率放大器PA、低噪声放大器LNA、频率合成器以及我们后面要重点说的TCXO驱动电路。开发者无需关心复杂的射频电路设计只需通过SPI配置芯片工作模式、频率、功率等参数即可完成无线通信。2.2 TCXO通信稳定的“定海神针”在Core1262-868M模块的命名或规格书中如果看到“TCXO”字样那绝对是一个重要的加分项。TCXO全称温度补偿晶体振荡器。为什么需要TCXO普通的晶体振荡器XO其输出频率会随着环境温度的变化而发生漂移。对于LoRa这种工作在特定频段如868MHz的窄带通信系统频率漂移是致命的。如果发射端和接收端的频率偏差过大轻则导致接收灵敏度下降、通信距离缩短重则根本无法解调信号导致通信完全失败。TCXO内部集成了温度传感器和补偿电路能够实时监测自身温度并产生一个电压信号去微调晶体的振荡频率使其在整个工作温度范围例如-40°C到85°C内保持极高的频率稳定度通常可达±0.5ppm到±2.5ppm。注意在严苛的工业环境或昼夜温差大的户外场景中是否选用带TCXO的模块直接决定了系统长期运行的稳定性。如果你的项目对可靠性要求高多花几块钱选择带TCXO的版本是非常值得的投资。2.3 SPI接口与主控对话的“桥梁”Core1262-868M模块与主控制器如STM32、ESP32等通过SPISerial Peripheral Interface接口通信。这是一种高速、全双工、同步的串行通信总线。SPI协议核心要点 SPI通常需要四根线SCLK时钟信号由主设备产生。MOSI主设备输出从设备输入。MISO主设备输入从设备输出。CS/NSS片选信号低电平有效由主设备控制。SX1262的SPI通信有固定的格式每个通信事务由主设备拉低CS信号开始然后发送一个指令字节Command后续可能跟随写入的数据或空字节以读取数据。指令字节的最高位MSB决定了读写方向0为写1为读。SPI模式SX1262的SPI模式固定为Mode 0即时钟极性CPOL0时钟空闲时为低电平时钟相位CPHA0数据在时钟的第一个边沿上升沿采样。这是最常用的SPI模式但在初始化MCU的SPI外设时必须严格确认配置与此一致。硬件片选 vs 软件片选硬件片选使用MCU的SPI外设专用的NSS引脚。优点是操作简单部分MCU的SPI DMA传输需要硬件NSS配合才能自动管理片选。缺点是通常一个SPI外设只能固定控制一个从设备。软件片选使用任意一个GPIO引脚来模拟片选信号。优点是灵活可以方便地控制多个SPI从设备每个设备一个GPIO。缺点是需要手动控制GPIO的电平在编写驱动时稍显繁琐。对于驱动Core1262-868M我个人更倾向于使用软件片选。理由很简单灵活。你的MCU板上可能不止这一个SPI设备比如还有一个SPI Flash存储芯片使用软件片选可以轻松管理多设备共享同一个SPI外设代码结构更清晰。在HAL库或LL库中你需要将硬件NSS配置为软件管理模式然后初始化一个GPIO作为CS引脚。3. 驱动开发与软件实操全流程3.1 硬件连接与初始化假设我们使用一颗STM32F103作为主控MCU。硬件连接示意图STM32F103引脚Core1262-868M模块引脚说明PA5SCKSPI时钟PA7MOSI主出从入PA6MISO主入从出PA4NSS片选软件控制此处为示例GPIOPC13BUSY模块忙状态指示重要PC14NRST模块复位引脚可选但推荐连接—ANT天线接口接50欧姆天线3.3VVCC电源确保干净稳定GNDGND地软件初始化步骤GPIO初始化初始化CS、BUSY、NRST引脚为输出模式NRST或输入模式BUSY。SPI外设初始化配置SPI1为全双工主模式数据宽度8位帧格式MSB先行预分频器设置一个合适的速率如FPCLK/8确保在SX1262支持的10MHz以下CPOL0 CPHA0。模块硬件复位拉低NRST引脚至少1ms然后拉高等待模块启动通常几毫秒。检查BUSY状态在发送任何SPI命令前必须等待BUSY引脚为低电平。这是SX1262与早期型号的一个重要区别用于指示内部状态机是否就绪。读取芯片版本发送命令0xC0读取芯片版本寄存器确认SPI通信正常。正确的返回值通常为0x12对应SX1262。3.2 关键寄存器配置流程解析模块的初始化远不止是让SPI通起来核心是一系列精心设计的寄存器配置。下面是一个典型的初始化序列切换至待机模式首先发送命令0x80让芯片进入待机模式这是配置其他参数的前提。配置DIO3作为TCXO电源控制这是使用TCXO的关键一步发送命令0x97后面跟两个字节的参数。例如0x00和0x6B。0x00表示使用DIO3引脚来控制一个外部电压调节器为TCXO供电0x6B定义了TCXO开启到稳定的延迟时间这里约3ms。这样芯片在需要射频活动前会自动拉高DIO3为TCXO供电结束后关闭实现节能。设置调制参数发送命令0x8B设置LoRa调制。参数包括扩频因子SF如SF7、带宽BW如125kHz、编码率CR如4/5和低数据速率优化标志。这些参数直接决定了通信的速率、距离和鲁棒性需要收发双方匹配。扩频因子选择心得SF越大接收灵敏度越高距离越远但传输时间越长功耗也越高。在城市多径干扰严重的环境适当提高SF如SF10比一味增大发射功率更有效。在空旷地带追求速率可以选用SF7。设置包格式发送命令0x8C配置显式/隐式包头模式、CRC校验等。对于新手强烈建议使用显式包头模式因为包头里包含了负载长度等信息容错性更好。设置射频频率发送命令0x86后面跟三个字节的频率参数。频率值单位Hz的计算公式为Freq F_XOSC * RF_Freq / 2^25其中F_XOSC是TCXO频率如32MHz。通常我们会直接使用芯片厂商提供的驱动函数输入868.125MHz这样的值函数内部会完成计算。设置发射功率发送命令0x8E。功率值以0.1dBm为单位。注意模块的最大发射功率受硬件限制如22dBm不要设置超过规格书的值否则可能损坏PA。设置接收超时发送命令0x8F可以设置一个以符号为单位的超时时间。0表示永不超时。合理设置超时可以防止接收机一直耗电。3.3 数据收发流程与代码示例配置完成后就可以进行数据收发了。发送流程检查BUSY引脚为低。切换至待机模式。清除中断标志。将负载数据写入缓冲区命令0x0E写缓冲区 偏移地址 数据。设置发送参数命令0x8D设置发送参数包括负载长度。切换至发送模式命令0x83设置发射模式。等待发送完成中断通过DIO1引脚或查询状态寄存器。接收流程检查BUSY引脚为低。切换至待机模式。清除中断标志。设置接收参数命令0x8D设置接收参数包括超时等。切换至接收模式命令0x82设置接收模式。等待接收完成中断。读取接收状态命令0x12获取RSSI、SNR等信息。从缓冲区读取数据命令0x1E读缓冲区 偏移地址 读取长度。代码片段示例发送// 假设已定义好 SPI发送函数 SPI_Write() 和 GPIO控制函数 void SX1262_SendPacket(uint8_t *payload, uint8_t size) { // 1. 等待模块就绪 while(HAL_GPIO_ReadPin(BUSY_GPIO_Port, BUSY_Pin) GPIO_PIN_SET); // 2. 进入待机模式 uint8_t cmd 0x80; HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(hspi1, cmd, 1, HAL_MAX_DELAY); HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // 3. 清除中断 uint8_t clearIrqCmd[3] {0x02, 0xFF, 0xFF}; // 命令 两个字节的掩码 HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(hspi1, clearIrqCmd, 3, HAL_MAX_DELAY); HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // 4. 写数据到缓冲区偏移地址0x00 uint8_t writeBufCmd[2] {0x0E, 0x00}; HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(hspi1, writeBufCmd, 2, HAL_MAX_DELAY); HAL_SPI_Transmit(hspi1, payload, size, HAL_MAX_DELAY); // 发送实际数据 HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // 5. 设置发送参数负载长度 size uint8_t setTxParamsCmd[4] {0x8D, 0x00, 0x00, size}; HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(hspi1, setTxParamsCmd, 4, HAL_MAX_DELAY); HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // 6. 进入发送模式 cmd 0x83; HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(hspi1, cmd, 1, HAL_MAX_DELAY); HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // 7. 等待发送完成这里以查询DIO1为例 while(HAL_GPIO_ReadPin(DIO1_GPIO_Port, DIO1_Pin) GPIO_PIN_RESET); }4. 实战避坑指南与高级技巧4.1 电源与天线两个最基础的“坑”电源纹波SX1262尤其是其内部的PA对电源非常敏感。电源纹波过大会导致发射频谱不纯产生杂散影响通信距离甚至干扰其他设备。务必在模块的VCC引脚附近放置一个10μF的钽电容和一个100nF的陶瓷电容进行退耦。如果使用DC-DC电源要选择低噪声的LDO。天线匹配与安装天线是射频电路的“嘴巴”和“耳朵”。使用不匹配的天线或安装不当如靠近金属外壳、PCB地平面信号会被严重衰减。务必使用50欧姆阻抗的天线并确保天线连接器可靠。对于PCB天线需要严格按照参考设计进行布局和匹配网络调试。4.2 SPI通信失败排查三板斧当你发现读写寄存器返回值全是0或0xFF时查电气连接用万用表确认SCK、MOSI、MISO、CS、GND连接无误没有虚焊。确认电压是3.3V。查时序配置用逻辑分析仪抓取SPI波形这是最直接有效的方法。确认SCK频率是否过高建议初始用1MHz测试确认CPOL和CPHA是否为Mode 0确认CS信号在每次传输前后有正确的跳变。查BUSY信号这是SX1262特有的。在每次SPI操作前必须确保BUSY引脚为低。如果BUSY一直为高可能是芯片未正确复位或硬件故障。尝试执行硬件复位流程。4.3 通信距离不达预期的优化思路参数调优不要只动功率。尝试提高扩频因子SF、降低带宽BW、开启前向纠错更高的编码率如4/8。这三者被称为LoRa的“黄金三角”调整它们比单纯加大功率更有效。空中速率符号率计算了解你的实际数据速率有助于评估性能。符号速率 Rs BW / (2^SF)。实际比特率 Rb Rs * CR * SF其中CR是编码率如4/50.8。例如BW125kHz SF7 CR4/5则 Rb ≈ 5.47 kbps。速率越低理论上距离越远。环境与天线将设备移至开阔地带测试排除环境遮挡。检查天线是否完好尝试更换不同增益的天线。天线的高度和位置对距离影响巨大。4.4 低功耗设计要点Core1262-868M本身功耗极低但系统功耗取决于你的使用模式。充分利用睡眠模式不通信时务必让芯片进入深度睡眠模式命令0x84。此模式下电流可低至百纳安级别。TCXO电源管理如果你使用的是带TCXO的模块并且按照前述方法配置了DIO3控制那么TCXO只在通信前后被短暂供电不会一直耗电。周期性唤醒结合MCU的RTC和外部中断实现定时唤醒-发送/接收-快速休眠的循环这是电池供电设备的典型工作模式。5. 进阶应用与性能测试5.1 跳频扩频FHSS实现简述在某些对抗干扰要求极高的场景可以在应用层实现简单的跳频。基本原理是收发双方按照预设的跳频序列在多个信道频率间同步切换。SX1262切换频率的速度很快通过0x86命令可以在每个数据包发送前切换到新的频率。这需要收发双方共享相同的跳频算法和种子增加了系统复杂性但能显著提升抗窄带干扰的能力。5.2 使用DMA提升SPI效率在高速或连续传输数据时使用DMA可以解放CPU。配置SPI的Tx/Rx DMA通道将数据缓冲区地址交给DMA管理。关键点由于SX1262每个SPI事务都需要CS引脚配合而硬件NSS在DMA传输时可能无法精确控制因此更推荐使用软件片选DMA的模式。在DMA传输开始前拉低CS在DMA传输完成回调函数中拉高CS。同时仍需严格遵循BUSY信号的检查。5.3 链路预算与实测距离估算链路预算是一个理论计算帮助你预估最大通信距离。链路预算 (dB) 发射功率 (dBm) 发射天线增益 (dBi) 接收天线增益 (dBi) - 接收灵敏度 (dBm) - 系统裕量 (dB)系统裕量通常留20-30dB以应对衰落、干扰等。例如发射功率20dBm天线增益2dBi接收灵敏度-137dBm则链路预算为 2022-(-137)-25 136dB。根据无线电波传播模型如Okumura-Hata在郊区环境下136dB的预算可能对应数公里的距离。这只是一个粗略估算实际必须通过现场测试验证。我个人在多个项目中反复使用Core1262-868M这类模块最大的体会是稳定性高于一切。不要盲目追求极限距离或最低功耗而是在可靠性、功耗、成本之间找到最适合你项目的平衡点。比如对于每小时上报一次数据的传感器将发射功率设置在适中水平如14dBm采用较高的SF既能保证在绝大多数天气条件下可靠通信又能让电池多用好几个月。另外建立一套完善的日志系统记录每次通信的RSSI和SNR对于后期分析网络质量、定位问题节点有不可估量的价值。最后多备几个不同厂商的模块做对比测试有时候硬件批次间的微小差异在复杂环境下会被放大成为影响项目进度的关键因素。

相关新闻

OCR+LLM双引擎名片解析全栈方案,从模糊扫描件到结构化JSON仅需1.8秒

OCR+LLM双引擎名片解析全栈方案,从模糊扫描件到结构化JSON仅需1.8秒

更多请点击: https://intelliparadigm.com 第一章:OCRLLM双引擎名片解析全栈方案,从模糊扫描件到结构化JSON仅需1.8秒 在真实办公场景中,用户常上传低分辨率、倾斜、反光或带阴影的名片扫描件。传统OCR方案在字迹粘连、中英文混排…

2026/10/4 4:30:06 阅读更多 →
3分钟掌握:无需微软账户离线加入Windows Insider计划

3分钟掌握:无需微软账户离线加入Windows Insider计划

3分钟掌握:无需微软账户离线加入Windows Insider计划 【免费下载链接】offlineinsiderenroll OfflineInsiderEnroll - A script to enable access to the Windows Insider Program on machines not signed in with Microsoft Account 项目地址: https://gitcode.c…

2026/10/1 7:41:08 阅读更多 →
你还在手动剪AI语音?这6个Auto-Editing插件已让87%专业播客团队告别剪辑台(附GitHub高星项目评测)

你还在手动剪AI语音?这6个Auto-Editing插件已让87%专业播客团队告别剪辑台(附GitHub高星项目评测)

更多请点击: https://intelliparadigm.com 第一章:AI语音播客制作的范式转移 传统播客制作长期依赖专业录音设备、人工剪辑与主持人即兴表达,流程冗长且门槛高。而AI语音播客技术正推动一场根本性范式转移——从“录制驱动”转向“文本驱动”…

2026/10/4 5:48:15 阅读更多 →

最新新闻

Trade.dll与TradeX.dll调用避坑指南:通达信程序化交易接口实战

Trade.dll与TradeX.dll调用避坑指南:通达信程序化交易接口实战

简介:面向量化交易与程序化交易开发者的通达信交易接口资料包,整合老版Trade.dll与新一代TradeX.dll行情交易二合一接口,通过TdxTradeServer将交易请求封装为HTTP REST API,解决DLL直连的跨语言调用与远程接入难题,适用…

2026/10/4 21:56:06 阅读更多 →
AI论文网站排行:10款避坑,毕业生真心推荐TaoToken

AI论文网站排行:10款避坑,毕业生真心推荐TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 21:56:06 阅读更多 →
内存压力测试实战指南:从工具选型到容器避坑全解析

内存压力测试实战指南:从工具选型到容器避坑全解析

简介:一份内存压力测试工具memtester 4.1.2的源码压缩包,面向Linux系统管理员、运维人员及底层开发者,用于检测服务器或PC内存的稳定性与潜在错误,解决因内存位翻转、数据丢失或内存泄漏导致的系统崩溃、数据损坏等隐患。压缩包仅…

2026/10/4 21:56:06 阅读更多 →
Cursor插件四层架构:解决加载失败与中文支持实战指南

Cursor插件四层架构:解决加载失败与中文支持实战指南

1. 项目概述:从“plugins”标题看Cursor生态的底层逻辑与实操真相“plugins”这个词在Cursor语境下,绝不是简单的一个文件夹名或配置项。它直指当前AI编程工具最核心、也最容易被新手忽略的命脉——可扩展性架构。我用Cursor三年,从最早手动改…

2026/10/4 21:55:05 阅读更多 →
Unity3D嵌入WPF实战:窗口句柄、D3DImage纹理共享与视频流方案选型

Unity3D嵌入WPF实战:窗口句柄、D3DImage纹理共享与视频流方案选型

简介:面向需要在桌面应用中集成三维交互能力的开发者,这份资源围绕Unity3D嵌入WPF的实现流程,提供了从Unity场景设计、工程导出到WPF宿主集成的完整示例,覆盖了WindowsFormsHost控件承载渲染窗口、场景加载,以及Unity与…

2026/10/4 21:55:05 阅读更多 →
代码 Agent 自动处理 GitHub Issue 并生成 PR 的工程实践

代码 Agent 自动处理 GitHub Issue 并生成 PR 的工程实践

1. 为什么我要把 Issue 到 PR 这条链路交给代码 Agent第一次冒出“让代码 Agent 处理 GitHub Issue”这个念头,是因为我实在受够了那种机械重复的搬运工作。团队里每天都有新 Issue 进来,一半是拼写错误、空指针防护、日志格式不统一这类小修小补&#x…

2026/10/4 21:55:05 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →