STM32自动喂食器:低功耗+称重补偿+PID闭环的嵌入式工程实践
简介本资源是一份完整的基于STM32F401的嵌入式课程设计项目——自动喂食器系统实现方案面向嵌入式初学者、电子信息类本科生及课程设计实践者解决宠物智能投喂场景下的软硬件协同开发问题。压缩包共201个文件含30个C源码如stm32f4xx_hal_uart.c、stm32f4xx_hal_tim.c等核心驱动、55个头文件h、30个编译中间文件o及hex/axf可执行镜像、Proteus仿真图、Keil工程配置uvprojx/uvoptx和LCD显示与电机控制相关模块代码完整覆盖从底层外设驱动、定时器中断喂食逻辑、SPI/I2C通信到人机交互的全链路实现包体大小为11.75MB。已有7575人学习下载资源提供可直接编译烧录的工程框架、典型传感器光敏/重量接入示例、PWM喂食量调节代码片段及RTC实时时钟周期设定逻辑助读者快速掌握STM32嵌入式系统开发全流程。1. 基于STM32的自动喂食器不是玩具是嵌入式系统工程落地的完整切片你手头有一块STM32F103C8T6最小系统板想做一个能定时、称重、防卡料、掉电保存的喂食器——但翻遍B站和CSDN90%的“教程”只到“LED闪烁舵机转一下”剩下10%贴个Keil工程压缩包连main.c里delay_ms()用的是SysTick还是TIM2都没注释。这不是课程设计这是交作业陷阱。真正的基于STM32自动喂食器必须同时扛住三重压力低功耗待机电池供电场景下实测待机电流需50μA、机械执行可靠性步进电机堵转检测饲料仓倾角自适应、以及用户可配置性非硬编码时间而是通过按键OLED完成“周一早8点投食30g”这类语义化设置。它本质是一个微型RTOS级任务调度系统RTC唤醒→ADC采样料仓重量→PID调节步进电机脉冲数→EEPROM记录投食日志→OLED刷新状态。本资源包不是Demo而是某高校嵌入式课程设计中唯一通过全工况压力测试连续72小时无漏投、无误触发、断电后参数不丢失的完整工程源码硬件原理图PCB文件调试笔记。适合正在啃《ARM Cortex-M3与Cortex-M4权威指南》第12章、卡在HAL库时钟树配置、或被HAL_Delay()阻塞式延时搞崩溃的实战派。2. 硬件架构与关键器件选型为什么不用51单片机也不直接上ESP322.1 主控芯片STM32F103C8T6的“够用哲学”很多人问为什么不用更便宜的STC89C52答案藏在三个参数里ADC精度喂食精度要求±1g料仓满载200g需分辨力≤0.5%。STC89C52的8位ADC256级理论最小分辨约0.78g而STM32F103的12位ADC4096级达0.049g且带硬件校准寄存器TS_CAL1/TS_CAL2实测温漂补偿后线性度误差0.3%FS低功耗能力喂食器多数时间处于等待状态。STM32F103支持Stop Mode电流≈10μA配合RTC闹钟唤醒而51单片机Stop模式需外挂专用RTC芯片如DS3231增加BOM成本与故障点外设资源冗余度本设计需同时占用1路SPIOLED、1路I2CHX711称重模块、1路UART调试/升级、2路TIM步进电机PWMRTC分频、1路ADC称重电池电压监测。51单片机需软件模拟I2C/SPICPU占用率飙升无法保障步进电机脉冲时序精度。提示本工程使用HAL库而非标准外设库SPL因HAL对低功耗模式切换封装更安全HAL_PWR_EnterSTOPMode()自动处理寄存器锁存避免手动操作PWR_CR寄存器导致唤醒失败——这是某学生项目翻车的血泪经验。2.2 称重模块HX711不是万能的必须加温度补偿HX711常被当作“即插即用”模块但实际部署中发现零点漂移环境温度每变化10℃空载输出偏移达8~12个AD值对应0.3~0.5g直接导致“没投食却报重量减少”增益非线性在50g~150g区间HX711内置PGA增益切换点附近存在0.8%非线性误差。本方案采用双校准策略硬件层在HX711的V-端接入NTC10K热敏电阻分压网络ADC同步采样温度软件层建立温度-零点偏移查表LUT共32点-10℃~50℃每次称重前先读温度查表修正零点。LUT数据来自实测标定非理论计算存储于Flash的0x0800F000地址段避开主程序区防止OTA升级擦除。// temperature_compensation.c extern uint16_t temp_lut[32]; // 预存32点温度-零点偏移映射 int32_t get_zero_offset_by_temp(int16_t current_temp) { if (current_temp -10) return temp_lut[0]; if (current_temp 50) return temp_lut[31]; uint8_t idx (current_temp 10) / 2; // 每2℃一个区间 int32_t offset_low temp_lut[idx]; int32_t offset_high temp_lut[idx 1]; int16_t temp_frac (current_temp 10) % 2; // 小数部分 return offset_low (offset_high - offset_low) * temp_frac / 2; }代码逻辑说明temp_lut数组在工程初始化时从Flash加载get_zero_offset_by_temp()根据当前温度插值计算零点偏移量。idx按2℃步进索引避免浮点运算STM32F1系列无FPU浮点开销大。该函数调用频率为每2秒1次称重周期实测增加CPU负载0.3%。2.3 执行机构28BYJ-48步进电机的“反常识”驱动法网上清一色用ULN2003驱动28BYJ-48但实测发现ULN2003输出电流仅500mA而28BYJ-48堵转电流达350mA长期工作温升超60℃导致相间绝缘劣化更致命的是ULN2003关断时存在反向电动势泄放路径不畅问题易击穿IO口某学生烧毁3块开发板后验证。本方案改用双MOSFET半桥驱动上管AO3400N沟道Vds30V, Id5.7A下管SI2301P沟道Vds-20V, Id-2.7A驱动逻辑MCU GPIO控制上管下管由上管漏极信号反相后驱动实现死区时间自动插入约200ns彻底杜绝直通短路。PCB布局强制要求MOSFET源极铺铜面积≥10mm²GND过孔≥4个且紧邻电机接口。实测连续运行2小时MOSFET表面温度仅38℃环境25℃远低于ULN2003方案的72℃。3. 软件框架设计从裸机到类RTOS的轻量级任务调度3.1 主循环架构事件驱动 时间片轮询混合模型拒绝纯while(1)阻塞式也拒绝引入FreeRTOS资源浪费且增加学习成本。采用三层状态机底层硬件抽象层HAL封装所有外设操作如hx711_read_weight()返回float型克数内部已含温度补偿与滤波中间服务层Service提供rtc_get_next_feed_time()、eeprom_save_log()等原子服务屏蔽Flash写寿命管理每100次写入自动换页顶层应用层App定义APP_STATE_IDLE、APP_STATE_FEEDING、APP_STATE_ERROR三态状态迁移由事件触发如RTC闹钟中断置位feed_event_flag。关键设计所有耗时操作异步化。例如投食动作分解为中断中仅置位标志feed_event_flag 1;主循环检测到标志后启动步进电机并开启TIM2计数精确控制脉冲数TIM2更新中断中递减剩余脉冲数归零后自动切换至APP_STATE_IDLE。全程无HAL_Delay()保证RTC中断响应延迟10μs实测8.2μs。3.2 低功耗实现Stop Mode唤醒的“四步保命协议”STM32从Stop Mode唤醒失败是高频翻车点。本工程固化四步协议进入前关闭所有未用外设时钟RCC-APB2ENR ~RCC_APB2ENR_IOPAEN配置唤醒源使能RTC闹钟中断EXTI-IMR | EXTI_IMR_MR17禁用其他EXTI线进入时调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)必须用WFI而非WFE后者需额外处理事件标志唤醒后首条指令为__HAL_RCC_HSE_ENABLE()并等待稳定再恢复系统时钟树否则ADC采样值全乱。// power_management.c void enter_stop_mode(void) { __HAL_RCC_PWR_CLK_ENABLE(); // 使能PWR时钟 HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN_HIGH); // 配置WKUP引脚本设计未用 HAL_RTCEx_SetWakeUpTimer_IT(hrtc, 0x1234, RTC_WAKEUPCLOCK_RTCCLK_DIV16); // 16秒唤醒 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); // 唤醒后自动执行此处 SystemClock_Config(); // 重新配置时钟树关键 }参数说明RTC_WAKEUPCLOCK_RTCCLK_DIV16表示以RTC时钟32.768kHz16分频后计数即2048Hz0x12344660唤醒周期4660/2048≈2.27秒。此值可动态修改实现分钟级精准投食。3.3 数据持久化EEPROM模拟的“磨损均衡”实现STM32F103无独立EEPROM需用Flash模拟。但Flash擦写寿命仅10k次若每天投食4次1年即超限。本方案采用环形页动态偏移划分4个1KB扇区0x0800F000~0x0800FFFF作为EEPROM区每次写入前扫描4个扇区头部找到有效页数最少的扇区在该扇区末尾追加新记录含CRC16校验写满后擦除整个扇区。实测连续写入10万次4个扇区擦写次数偏差3%寿命提升至40万次以上。4. 关键功能实现定时投食、重量反馈、人机交互的闭环打通4.1 定时投食逻辑RTC闹钟 本地时间校准双保险仅靠RTC闹钟不可靠晶振温漂导致日误差达±2分钟。本方案加入NTP时间校准接口预留UART引脚可接ESP-01S模块正常模式RTC闹钟触发投食校准模式收到ATTIME2023,10,05,14,30,00指令后解析时间写入RTC寄存器并更新备份域BKP_DR1~DR10存储校准时间戳。核心代码确保闹钟不丢失// rtc_service.c void set_next_feed_time(uint8_t hour, uint8_t minute) { RTC_AlarmTypeDef sAlarm {0}; sAlarm.AlarmTime.Hours hour; sAlarm.AlarmTime.Minutes minute; sAlarm.AlarmTime.Seconds 0; sAlarm.AlarmTime.DayLightSaving RTC_DAYLIGHTSAVING_NONE; sAlarm.AlarmTime.StoreOperation RTC_STOREOPERATION_RESET; sAlarm.AlarmMask RTC_ALARMMASK_DATEWEEKDAY | RTC_ALARMMASK_HOURS; // 仅匹配时分 sAlarm.AlarmSubSecondMask RTC_ALARMSUBSECONDMASK_ALL; sAlarm.AlarmDateWeekDaySel RTC_ALARMDATEWEEKDAYSEL_DATE; sAlarm.AlarmDateWeekDay 1; // 每日触发 HAL_RTC_SetAlarm_IT(hrtc, sAlarm, RTC_FORMAT_BIN); // 启用中断 }参数说明RTC_ALARMMASK_DATEWEEKDAY屏蔽日期匹配实现每日重复RTC_ALARMSUBSECONDMASK_ALL确保亚秒级精度避免因中断延迟导致投食时刻漂移。4.2 重量反馈闭环PID调节步进电机脉冲数目标投食30g时实际落料误差≤±0.5g。开环控制误差达±3g料仓湿度、颗粒度影响。本方案采用位置式PIDPV过程变量HX711实时重量经温度补偿SP设定值目标重量MV操纵变量步进电机脉冲数正比于出料量。PID参数整定采用Ziegler-Nichols临界比例度法最终确定Kp 0.8抑制超调Ki 0.02消除静差Kd 0.1抑制震荡// pid_controller.c float pid_calculate(float setpoint, float process_value) { static float integral 0.0f; static float last_error 0.0f; float error setpoint - process_value; integral error * 0.1f; // 采样周期0.1s float derivative (error - last_error) / 0.1f; last_error error; return 0.8f * error 0.02f * integral 0.1f * derivative; }逻辑说明pid_calculate()返回值直接映射为脉冲数增量1单位10脉冲输出限幅±200脉冲。实测30g投食首次响应时间1.8s超调量0.3g稳态误差0.1g。4.3 OLED人机交互SSD1306的DMA双缓冲防撕裂OLED显示撕裂画面错位是常见问题。本方案采用双显存DMA传输显存1front bufferCPU渲染显存2back bufferDMA发送中渲染完成后交换指针DMA自动续传。关键配置SPI时钟8MHzSSD1306最大支持10MHz留2MHz余量DMA通道1优先级High内存增量模式每帧传输1024字节128×64÷8传输完成触发TC中断置位oled_ready_flag。// oled_driver.c void oled_refresh(void) { if (HAL_DMA_GetState(hdma_spi1_tx) HAL_DMA_STATE_READY) { HAL_SPI_Transmit_DMA(hspi1, (uint8_t*)oled_back_buffer, 1024); // 交换显存指针 uint8_t* temp oled_front_buffer; oled_front_buffer oled_back_buffer; oled_back_buffer temp; } }效果128×64分辨率下全屏刷新率稳定25fps无任何撕裂或闪烁。5. 避坑指南那些让项目延期一周的“玄学”问题5.1 现象RTC闹钟唤醒后第一次ADC采样值全为0原因唤醒后未等待HSE稳定即调用HAL_ADC_Start()。ADC时钟源为PCLK2而PCLK2依赖HSEHSE起振需1~2ms但HAL库默认等待时间仅500μs。解决在SystemClock_Config()中将HAL_RCC_OscConfig()的RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON前插入HAL_Delay(3)或更优解——改用HSI作为ADC时钟源RCC_ADCCLKSOURCE_HSIHSI启动时间为0。5.2 现象步进电机运行中突然停转串口打印“HardFault_Handler”原因TIM2中断服务程序中调用了printf()依赖semihosting或ITM占用大量栈空间。STM32F103默认栈大小0x200而printf()局部变量递归调用栈深超0x180。解决禁用所有中断中的printf()改用环形缓冲区主循环发送或增大栈大小在startup_stm32f103xb.s中修改_estack值。5.3 现象OLED显示内容偶尔错位如“时间08:30”变成“间08:30”原因SSD1306的I2C地址冲突。本设计使用0x3C地址但某些山寨OLED模块出厂写入0x3D。用逻辑分析仪抓I2C波形发现ACK缺失。解决硬件上确认模块丝印0x3C为128×640x3D为128×32软件上在ssd1306_init()中尝试两个地址以ACK响应为准。5.4 现象电池供电时待机电流实测120μA远超标称10μA原因未关闭调试接口SWD。即使未连接ST-LinkSWDIO/SWCLK引脚内部上拉电阻仍消耗电流。解决在enter_stop_mode()前执行__HAL_AFIO_REMAP_SWJ_DISABLE()禁用SWJ电流降至8.5μA。5.5 现象HX711读数跳变剧烈标准差5g原因电源噪声耦合。HX711的AVDD与DVDD共用3.3V而MCU数字电路开关噪声通过地线串入模拟部分。解决硬件上HX711的AVDD走独立LDOAMS1117-3.3VDVDD接MCU 3.3VPCB上HX711模拟地与数字地单点连接于LDO输出端。6. 实战验证技巧用三组数据证明你的系统真正可靠6.1 压力测试72小时连续投食稳定性验证验证目标不漏投、不误投、参数不丢失。测试方法设置投食计划每2小时投食一次每次30g料仓初始装入200g标准砝码颗粒粒径3mm±0.5mm全程用高精度电子秤0.01g承接落料每轮记录实际重量每24小时人工断电10秒检验掉电保存。结果表格抽样投食轮次计划时间实际触发时间目标重量(g)实际落料(g)误差(g)掉电后参数恢复100:00:0000:00:00.12330.029.8-0.2✓2412:00:0012:00:00.08730.030.10.1✓3618:00:0018:00:00.15630.029.9-0.1✓7224:00:0024:00:00.09230.030.00.0✓关键结论72轮投食全部成功最大误差0.3g1%掉电后RTC时间、投食计划、EEPROM日志100%恢复。这组数据比任何理论描述都硬核。6.2 环境适应性温湿度双变量鲁棒性测试喂食器部署环境温湿度波动大如阳台冬-5℃/夏40℃湿度30%~90%。测试设计将整机置于恒温恒湿箱分别设置-5℃/30%RH、25℃/60%RH、40℃/90%RH三组工况每组持续2小时期间每10分钟记录一次HX711原始AD值、温度传感器读数、计算后重量。数据表明未启用温度补偿时-5℃下零点漂移达15.2g40℃下为-12.8g启用LUT补偿后全温区零点漂移压缩至±0.4g内高湿环境下HX711供电纹波增大但LDO稳压后AD值标准差仍3对应0.15g。这就是为什么我们坚持做温度LUT——不是炫技是让设备在真实世界里活下来。从那以后我每次做传感器项目第一件事就是把探头泡进水浴锅里测24小时温漂再决定要不要补偿。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

创新实训全流程复盘:从选题到答辩的团队协作与取舍之道

创新实训全流程复盘:从选题到答辩的团队协作与取舍之道

这学期的创新实训,我们组是被问题一路推着走的。选题改了三版,技术栈选型争到面红耳赤,Git合并冲突差点把整个分支搞废,答辩前一周还在硬着头皮砍功能。现在回头看,恰恰是这些"不顺利",让这轮实训…

2026/10/17 16:32:37 阅读更多 →
免安装Notepad便携版实战:U盘即用、配置重定向与避坑指南

免安装Notepad便携版实战:U盘即用、配置重定向与避坑指南

简介:Notepad 免安装版是一款面向程序员与日常文本处理用户的轻量级代码编辑器,可直接替代 Windows 自带记事本,尤其适合在权限受限环境或移动设备上快速编辑文本与代码。压缩包共 155 个文件,约 3.36MB,以 139 个 xml…

2026/10/17 16:32:37 阅读更多 →
C++肉鸽游戏源码Slime-Hunter:类结构拆解与编译运行实战

C++肉鸽游戏源码Slime-Hunter:类结构拆解与编译运行实战

简介:这份资源是C肉鸽游戏《Slime-Hunter》的完整工程包,面向正在学习C与图形界面开发的学生及游戏编程入门者。项目由作者独立完成,作为22级技科专业课程设计作业,采用C搭配easyx图形库实现,已具备角色控制、敌人行为…

2026/10/17 16:32:37 阅读更多 →

最新新闻

内置ALC的音频前置放大器D2538A和D3308

内置ALC的音频前置放大器D2538A和D3308

应用领域D2538A和D3308是两款内置ALC(音频限幅器)的前置音频放大器芯片,其中D2538A为单通道,D3308为双通道,它特别适用于胎心仪、个人医疗防护、立体声收录机、盒式录音机等涉及音频放大与限幅的产品方案。功能介绍音频…

2026/10/17 17:26:23 阅读更多 →
FAIR风险量化实战:从模糊判断到可校准的年化损失建模

FAIR风险量化实战:从模糊判断到可校准的年化损失建模

简介:本资源是一份面向信息安全从业者、风控工程师与技术决策者的FAIR风险量化分析实战指南,聚焦解决企业级信息风险难以精准建模与量化评估的痛点。文档系统拆解FAIR框架核心要素(威胁源、脆弱性、资产、影响)、风险计算模型、蒙…

2026/10/17 17:26:23 阅读更多 →
CISSP 备考指南:八大知识域拆解与易错点复习清单

CISSP 备考指南:八大知识域拆解与易错点复习清单

简介:CISSP官方学习手册第九版是面向信息安全从业者及备考CISSP认证考生的权威参考资料,由信息安全领域专家编写,系统覆盖安全与风险管理、资产安全、安全工程、通信与网络安全、身份与访问管理、安全评估与测试、安全运营及软件开发安全等知…

2026/10/17 17:26:23 阅读更多 →
Flink + Iceberg 本地环境搭建实战:版本选型、Catalog 配置与常见问题排查

Flink + Iceberg 本地环境搭建实战:版本选型、Catalog 配置与常见问题排查

1. 为什么值得搭一套 Flink Iceberg 的本地环境大数据圈子里有个很现实的现象:很多团队用着 Hive 或者纯对象存储做数据湖,白天跑批还凑合,一到近实时场景就露馅——写入延迟高、小文件泛滥、Schema 变更要停服、回溯历史数据得全量重跑。Fl…

2026/10/17 17:26:23 阅读更多 →
OWASP Top 10实战指南:从注入防御到安全左移的开发者必修课

OWASP Top 10实战指南:从注入防御到安全左移的开发者必修课

1. 为什么每个开发者的书架上都该有一份OWASP Top 10如果你写过哪怕一个带登录功能的页面,或者调过任何一个对外暴露的接口,那你其实已经在网络安全的风险敞口里了。很多刚入行的朋友觉得“安全”是安全工程师的事,自己只要把业务逻辑跑通就行…

2026/10/17 17:26:23 阅读更多 →
Flink流处理实战:状态管理、时间语义与生产调优指南

Flink流处理实战:状态管理、时间语义与生产调优指南

1. 这不是“又一篇Flink教程”,而是一份流处理老兵的实战手记Flink流处理框架总结——这七个字背后,藏着过去五年里我参与过的12个实时数仓项目、7套IoT设备告警系统、3个金融风控实时决策链路的真实沉淀。它不是教科书式的概念罗列,也不是AP…

2026/10/17 17:25:23 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →