STM32C5开发实战:从环境搭建到低功耗与TrustZone配置
1. 为什么STM32C5值得单独写一篇开发教程第一次拿到STM32C5系列样片的时候我盯着丝印看了半天——C5这个命名在STM32家族里算是新面孔定位介于主流F系列和高性能H系列之间主打的是“够用的算力更低的功耗更友好的成本”。如果你之前玩过F103或者F407上手C5基本不会有陌生感但真要把它的性能榨干光靠老经验是不够的。这篇教程面向三类人一是刚接触STM32、想从C5入门的新手二是从F1/F4迁移过来、想搞清楚C5差异点的老玩家三是做低功耗或成本敏感型产品、正在选型的工程师。我会把C5的开发环境搭建、时钟树配置、外设驱动、低功耗调优、常见坑排查这几块讲透代码和参数都给到能直接抄的程度。全文基于我实际在几个模拟项目上的调试记录整理不是照搬手册的翻译稿。STM32C5的核心卖点我总结下来是三条Cortex-M33内核带来的TrustZone安全能力、更精细的电源域划分、外设引脚的高度复用性。这三点决定了它的开发思路和F系列有本质区别——你不能再用“配好时钟就能跑”的思维去对待它电源管理和安全分区得从项目第一天就规划进去。2. 开发环境搭建与工具链选型2.1 三种主流开发方式的取舍搞STM32开发第一步永远是选工具链。C5目前支持的路子主要有三条我列个表对比一下你按自己的习惯和项目需求挑方案代表工具优点缺点适合人群官方IDESTM32CubeIDE免费、集成CubeMX、调试方便体积大、启动慢、界面偏重新手、快速原型商业IDEKeil MDK / IAR编译优化好、生态成熟收费、License管理麻烦企业项目、老工程师命令行GCC Makefile OpenOCD轻量、可CI/CD、自由度高配置门槛高、无图形化进阶玩家、自动化构建我个人的建议是新手先用STM32CubeIDE把流程跑通等熟悉了再往命令行迁移。CubeIDE最大的价值是CubeMX图形化配置时钟树、引脚复用、外设初始化代码一键生成能帮你避开大量低级错误。等你对寄存器操作有感觉了再切到GCCMakefile编译速度能快好几倍而且方便接入自动化构建流程。2.2 从零搭建CubeIDE工程的完整步骤假设你已经在官网下载并安装了STM32CubeIDE接下来按这个流程走新建工程File → New → STM32 Project在芯片选择器里搜索“STM32C5”选中你手上的具体型号比如STM32C542RET6这类具体以你实际芯片为准。配置时钟源在Pinout Configuration里先到System Core → RCC把High Speed Clock (HSE)设为Crystal/Ceramic Resonator。C5的外部晶振一般选8MHz或16MHz具体看你板子上的实际焊接。配置调试接口System Core → SYSDebug选Serial Wire。这一步千万别忘否则第一次烧录后可能锁死芯片得用BOOT0拉高才能救回来。配置时钟树切到Clock Configuration标签页输入你的目标主频C5常见能跑到144MHz左右具体看型号让工具自动计算分频系数。生成代码Project → Generate Code选择“Copy only necessary library files”以减小工程体积。生成后的工程结构里Core/Src/main.c是你的主战场Core/Inc/main.h放全局宏定义外设初始化代码都在Core/Src/stm32c5xx_hal_msp.c里。这里有个经验不要直接在CubeMX生成的初始化函数里改代码因为下次重新生成会被覆盖。正确做法是在main.c的/* USER CODE BEGIN */和/* USER CODE END */之间写自己的逻辑。2.3 烧录与调试的实操要点烧录器我用的是ST-LINK V3兼容性和速度都比V2好不少。接线就四根SWDIO、SWCLK、GND、3.3V。注意SWCLK和SWDIO的走线尽量短超过10厘米就容易出现连接不稳定我踩过这个坑排查了半天以为是芯片坏了结果是杜邦线太长。调试配置里有个关键选项Reset behaviour。默认是“Connect under reset”但如果你板子上电后程序立刻跑飞建议改成“Hardware reset”这样调试器会先复位芯片再连接成功率更高。另外C5支持SWO单线输出可以配合ITM打印调试信息比串口打印省一个外设具体在Debug配置里勾选SWV即可。3. 时钟树与电源管理的核心配置3.1 时钟树配置的底层逻辑STM32C5的时钟树比F1复杂不少核心变化是多了一个PLL分频路径和更灵活的AHB/APB预分频器。很多人配时钟的时候只看最终主频对不对忽略了各总线的实际频率结果外设工作异常。配时钟的正确顺序是先确定HSE频率 → 算PLL倍频 → 分配AHB/APB1/APB2 → 检查各外设时钟是否超限。举个例子假设HSE是8MHz你想让SYSCLK跑到144MHzPLL输入先经过M分频比如/1得到8MHz再经过N倍频比如×36得到288MHz最后经过P分频比如/2得到144MHz的SYSCLK公式是SYSCLK HSE / M × N / P。这里M、N、P的取值不是随便填的每个都有范围限制CubeMX会自动帮你校验但你要理解为什么这么选。N值越大PLL的抖动越小但锁定时间越长对低功耗场景有影响。APB1和APB2的分频也要注意C5的APB1最高一般只能到72MHz左右APB2能到144MHz。如果你把APB1也设成144MHz定时器、串口这些挂载在APB1上的外设就会工作异常。CubeMX里如果超频会标红但有时候它只是警告你得自己确认。3.2 电源域划分与低功耗模式C5的电源管理是它区别于F系列的最大亮点。它把芯片分成了VDD主电源域、VBAT备份域、以及独立的模拟电源域VDDA。这三个域的供电策略直接决定了你能用哪些低功耗模式。C5支持的低功耗模式主要有四种我按功耗从高到低排模式典型功耗唤醒时间保持内容适用场景SleepmA级极快全部短暂等待外设Stop 0/1/2μA级微秒级SRAM寄存器周期性采集Standby亚μA级毫秒级仅备份域长期待机Shutdown最低最慢几乎不保持极端省电进入Stop模式的关键操作是配置PWR_CR1寄存器里的LPMS位然后执行__WFI()指令。但这里有个大坑进入低功耗前必须把所有未使用的外设时钟关掉把GPIO配成模拟输入或带上拉的输入否则漏电流会比你预期的高一个数量级。我实测过一个悬空的GPIO在Stop模式下能多消耗几十微安十几个悬空引脚加起来就是几百微安直接把低功耗优势吃没了。唤醒源的选择也很讲究。RTC闹钟、外部中断、串口唤醒都可以但不同唤醒源对应的低功耗深度不一样。比如你想用串口接收中断唤醒那就只能进Stop模式不能进Standby因为Standby下串口外设是断电的。这个逻辑在选型阶段就要想清楚。3.3 TrustZone安全分区的初步配置C5搭载的Cortex-M33内核支持TrustZone可以把芯片分成安全世界和非安全世界。这个功能对普通项目可能用不上但如果你做的是涉及密钥存储、固件防篡改的产品就得认真对待。配置TrustZone的第一步是划分Flash和SRAM的安全属性。在CubeMX的Security配置里你可以指定哪些Flash扇区属于安全区哪些属于非安全区。安全区的代码只能被安全区访问非安全区想调用安全区的功能必须通过预定义的接口类似系统调用。这里有个实操经验初期开发建议先全部设为非安全区等业务逻辑跑通了再逐步迁移到安全区。因为一旦启用TrustZone调试器的访问权限也会受限非安全区调试器看不到安全区的内存排查问题会很痛苦。我见过有人一上来就开TrustZone结果程序跑不起来查了两天发现是安全区初始化代码里少配了一个寄存器。4. 外设驱动开发与实战代码4.1 GPIO与中断的规范写法GPIO是所有外设的基础但恰恰是最容易写乱的地方。我见过太多项目把GPIO初始化散落在各个文件里最后想改一个引脚功能得全局搜索。规范的做法是在CubeMX里统一配置所有引脚生成的代码集中在MX_GPIO_Init()里业务逻辑里只调用HAL库的读写函数。中断的写法也有讲究。C5的中断向量表比F1多了不少条目配置外部中断的流程是在CubeMX里把对应引脚设为GPIO_EXTI模式在NVIC配置里使能对应的EXTI中断线在stm32c5xx_it.c里找到对应的中断服务函数调用HAL_GPIO_EXTI_IRQHandler()重写HAL_GPIO_EXTI_Callback()回调函数在里面写你的业务逻辑void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin KEY_PIN) { /* 消抖处理别直接在中断里做耗时操作 */ key_pressed_flag 1; } }注意中断服务函数里绝对不要做延时、打印、复杂计算这类耗时操作。正确做法是置一个标志位在主循环里处理。我见过有人在中断里调用HAL_Delay()结果整个系统卡死因为HAL_Delay依赖SysTick中断而中断里又关了中断直接死锁。4.2 串口通信的收发配置串口是调试和通信的主力外设。C5的USART功能很全支持DMA、空闲中断、硬件流控。我推荐用DMA空闲中断的方式接收不定长数据这是工业项目里最稳的方案。配置步骤CubeMX里使能USART模式选Asynchronous在DMA Settings里添加USART_RX的DMA通道模式选Circular使能USART的IDLE中断代码里启动DMA接收HAL_UART_Receive_DMA(huart1, rx_buf, BUF_SIZE)在空闲中断回调里处理数据void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { if (huart-Instance USART1) { /* Size就是这一帧实际收到的字节数 */ process_frame(rx_buf, Size); /* 重新启动接收 */ HAL_UART_Receive_DMA(huart1, rx_buf, BUF_SIZE); } }这套方案的好处是不需要预先知道数据长度也不占用CPU轮询。波特率方面C5在144MHz主频下跑115200甚至921600都很稳但要注意波特率误差CubeMX会显示实际波特率和目标值的偏差超过3%就可能导致通信误码。4.3 定时器与PWM输出定时器是STM32的精华外设C5的定时器资源很丰富有基本定时器、通用定时器、高级定时器。做PWM输出一般用通用定时器配置流程选一个通用定时器比如TIM2时钟源选内部时钟计算预分频器PSC和自动重装载值ARR配置PWM Generation通道设置占空比使能定时器PWM频率的计算公式是PWM频率 定时器时钟 / ((PSC1) × (ARR1))。假设定时器时钟是144MHz你要输出1kHz的PWM可以设PSC143ARR999这样144000000 / (144 × 1000) 1000Hz。占空比通过__HAL_TIM_SET_COMPARE()动态调整。实操心得调PWM的时候先用示波器确认频率和占空比再接到负载上。我见过有人直接驱动电机结果频率设错了电机嗡嗡响还发烫差点烧了驱动管。4.4 ADC采样与滤波处理C5的ADC是12位逐次逼近型支持多通道扫描和DMA传输。做模拟量采集的标准流程是配置ADC时钟注意ADC时钟不能超过芯片规定的上限C5一般是几十MHz具体查手册使能需要的通道设置采样时间配置DMA让ADC转换结果自动搬到内存数组启动ADC校准再启动转换采样时间的选择很关键采样时间越长精度越高但转换速度越慢。对于高阻抗信号源采样时间要设长一些否则采样电容充不满读数会偏低。我一般先用较长的采样时间跑通再根据实际需求逐步缩短。软件滤波方面最简单有效的是滑动平均滤波维护一个长度为N的数组每次新数据进来就替换最旧的数据然后求平均。N取8或16比较合适太大响应会变慢。如果信号噪声特别大可以再加一个中值滤波先排序取中间值再滑动平均。5. 常见问题排查与避坑指南5.1 程序烧录后不运行的排查思路这是新手最常遇到的问题我按排查优先级列个表现象可能原因排查方法调试器连不上SWD引脚被复用/时钟没起检查SWD配置用Connect under reset烧录成功但不跑BOOT引脚状态错误确认BOOT0接地BOOT1按需配置跑一下就死机时钟配置错误/堆栈溢出检查时钟树增大堆栈外设不工作外设时钟没使能检查RCC寄存器对应位串口无输出波特率/引脚映射错误用示波器看TX引脚波形我踩过最坑的一次是晶振没起振。板子焊的是8MHz晶振但负载电容选错了导致起振不稳定程序时跑时不跑。后来用示波器测晶振引脚发现波形幅度很小换了匹配的电容就好了。所以新板子第一次上电一定要先测晶振波形这是硬件调试的第一课。5.2 低功耗模式下的异常唤醒低功耗调试最头疼的是“明明没触发唤醒源芯片却自己醒了”。常见原因有三个未使用的GPIO悬空悬空引脚的电平会浮动可能触发外部中断。解决办法是把所有未使用引脚配成模拟输入。调试器连接着调试器本身会阻止芯片进入深度低功耗。测功耗时一定要拔掉调试器。RTC配置问题如果RTC闹钟没清标志会反复触发唤醒。进低功耗前记得清中断标志。我实测过一个案例某项目进Stop模式后功耗一直降不下来查了半天发现是一个LED引脚没关虽然LED不亮但引脚输出高电平通过限流电阻到地形成了漏电流。把那个引脚配成模拟输入后功耗从200μA直接降到5μA。5.3 中断优先级冲突的处理C5的中断优先级分组比F1更灵活但配置不当会导致中断嵌套混乱。核心原则是优先级数值越小优先级越高。抢占优先级决定能不能嵌套子优先级决定同级谁先执行。配置建议系统关键中断如SysTick、DMA设最高抢占优先级通信类中断串口、SPI设中等优先级按键、LED这类人机交互中断设最低优先级注意不要在中断里调用HAL_Delay()因为HAL_Delay依赖SysTick如果SysTick优先级比当前中断低就会死等。正确做法是用一个计数器变量在主循环里判断超时。5.4 常见问题速查表问题快速定位方法解决方案编译报错找不到头文件检查Include路径在工程属性里添加库路径链接报错重复定义检查是否重复包含.c文件用extern声明只在一个文件定义程序跑飞进HardFault查看LR和PC寄存器用调试器看调用栈定位越界访问串口乱码测波特率误差调整时钟或换波特率ADC读数跳动大检查参考电压和地加滤波电容软件滑动平均PWM无输出检查定时器使能和引脚复用确认AF配置和CCR值6. 从原型到产品的进阶建议6.1 代码分层与可维护性原型阶段怎么快怎么来但要做产品代码结构必须分层。我习惯分成三层硬件抽象层HAL封装、业务逻辑层、应用层。硬件抽象层把HAL库的调用再包一层比如bsp_uart_send()这样以后换芯片型号只改这一层就行。业务逻辑层放状态机、算法应用层放主循环和任务调度。这种分层的好处是可测试性和可移植性。我做过一个项目从C5迁移到另一个系列因为分层做得好只花了两天就完成了移植业务代码一行没改。6.2 固件升级方案的选择产品化绕不开固件升级。C5支持IAP在应用编程可以通过串口、CAN、甚至无线模块升级。核心思路是把Flash分成Bootloader区和App区Bootloader负责接收新固件并写入App区App区负责业务逻辑。实现要点Bootloader里要能跳转到App区跳转前关中断、设栈指针App区要重定向中断向量表用SCB-VTOR寄存器升级协议要加校验CRC或哈希防止写入损坏的固件经验之谈升级过程中一定要有断电保护机制。我见过升级到一半断电设备变砖的案例。解决办法是在Flash里留一个标志位升级前先擦除标志升级完成再写回Bootloader启动时检查这个标志如果标志无效就停留在Bootloader等待重新升级。6.3 量产测试的自动化小批量手工测试还行量产必须自动化。我的做法是写一个上位机测试工具通过串口和待测板通信自动跑一遍GPIO、串口、ADC、Flash读写等测试项结果自动记录。C5的SWD接口也支持批量烧录配合治具可以一次烧多块板。测试项设计要覆盖所有对外接口和关键功能但也不能太慢。我一般把测试时间控制在30秒以内太长了产线工人会有意见。测试脚本要能区分“致命错误”和“警告”致命错误直接判不合格警告记录但不拦截。6.4 后续学习方向C5的TrustZone和低功耗特性还有很多可挖的地方。如果你想深入我建议按这个顺序先把低功耗模式吃透做几个不同场景的功耗测试再研究TrustZone尝试把密钥存储和加解密放到安全区最后可以看看C5的硬件加速器如果有的话比如CRC、AES这些能大幅提升特定任务的效率。我个人在实际操作中的体会是STM32C5不是F系列的简单升级而是一个需要重新建立心智模型的新平台。它的电源管理和安全特性要求你在项目初期就做好架构设计而不是像以前那样“先跑起来再说”。前期多花一天规划后期能省一周调试。最后再分享一个小技巧调试低功耗时用万用表串联在电源线上测电流比看调试器里的功耗估算准得多而且能发现很多软件层面看不到的硬件漏电问题。

相关新闻

陌生代码库先啃数据预处理:second项目数据管道拆解与调试实战

陌生代码库先啃数据预处理:second项目数据管道拆解与调试实战

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

2026/10/14 1:27:08 阅读更多 →
Gazebo Sim 分布式仿真架构解析:Level、Performer 与按需加载机制

Gazebo Sim 分布式仿真架构解析:Level、Performer 与按需加载机制

机器人 【免费下载链接】gz-sim Open source robotics simulator. The latest version of Gazebo. 项目地址: https://gitcode.com/gh_mirrors/gz/gz-sim 点击查看 免费下载 本篇技术指南基于 gz-sim(Gazebo Sim)仓库中的设计文档 doc/archi…

2026/10/14 1:27:08 阅读更多 →
齿轮系统动力学建模与工程实践解析

齿轮系统动力学建模与工程实践解析

1. 齿轮系统动力学概述齿轮传动作为机械工程中最基础也最关键的传动形式,其动力学特性直接影响着整个传动系统的可靠性、噪声水平和寿命。在实际工程中,约60%的机械故障都与齿轮系统动力学问题相关。传统的静态分析方法往往无法准确预测齿轮在实际运转过…

2026/10/14 1:27:08 阅读更多 →

最新新闻

信创招标要求写在哪一节_96万的燃气项目

信创招标要求写在哪一节_96万的燃气项目

10 月 12 日,焦作市公共资源交易中心公示了一个城市燃气安全监测服务项目的中标结果。金额不大——96 万元,中标方是中国移动通信集团河南有限公司焦作分公司,评审总得分 93.92。项目内容是对市区 150 处燃气领域相邻空间节点建设全覆盖、全天…

2026/10/14 2:02:18 阅读更多 →
Cadence Cerebrus 用户指南:强化学习驱动的数字后端 PPA 自动调优实战

Cadence Cerebrus 用户指南:强化学习驱动的数字后端 PPA 自动调优实战

简介:Cadence Cerebrus User Guide 是面向电子设计自动化工程师与技术人员的官方操作指南,聚焦 Cadence Cerebrus 工具在芯片设计流程优化中的实际应用。该指南对应产品版本 22.1x,最后更新于 2023 年 12 月,内容涵盖工具特定指令…

2026/10/14 2:02:18 阅读更多 →
astropy SAMP Hub 启动与停止完全指南:三种方式详解与底层原理

astropy SAMP Hub 启动与停止完全指南:三种方式详解与底层原理

科学计算科研数据分析 【免费下载链接】astropy Astronomy and astrophysics core library 项目地址: https://gitcode.com/gh_mirrors/as/astropy 点击查看 免费下载 导读 SAMP(Simple Application Messaging Protocol,简单应用消息协议&a…

2026/10/14 2:02:18 阅读更多 →
Knative Eventing 跨命名空间事件链接(Cross Namespace Event Links)特性全解析

Knative Eventing 跨命名空间事件链接(Cross Namespace Event Links)特性全解析

文档教程云原生 【免费下载链接】docs User documentation for Knative components. 项目地址: https://gitcode.com/gh_mirrors/docs1/docs 点击查看 免费下载 Knative Eventing 从 1.15 版本起引入了 cross-namespace-event-links 实验特性,允许 Trig…

2026/10/14 2:02:18 阅读更多 →
NPO光引擎替掉4.8万个光模块_买的是什么

NPO光引擎替掉4.8万个光模块_买的是什么

1. 引言:一次「不追求更快」的互联替换华为在 HUAWEI CONNECT 2026 上发布的 Ascend 960 SuperPoD,宣传语是「业界首个基于近封装光学(NPO)的超节点」。它给了一组很好算的数字:约 5500 个 Hi-ONE 光引擎,替…

2026/10/14 2:02:18 阅读更多 →
基于Vue3+SpringBoot的前后端分离电商系统设计与实现:以雪地装备销售平台为例

基于Vue3+SpringBoot的前后端分离电商系统设计与实现:以雪地装备销售平台为例

简介:一套基于Vue.js、SpringBoot与MySQL构建的雪地装备销售系统成品源码,面向计算机专业毕业设计或课程设计场景,可直接作为高评分项目提交。系统覆盖商品展示、搜索、购买、订单处理、支付接口及用户注册登录等完整电商流程,采用…

2026/10/14 2:01:18 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →