STM32C5实战:M33内核开发与调试核心技巧
第一次拿到STM32C5样片时我做的第一件事不是翻数据手册第一页的参数表而是直接跳到中断向量表、启动文件和时钟树相关章节。原因很简单评估一颗芯片的软件开发上手难度看的不是主频多高而是外设寄存器、中断布局、内存地址映射这些“软件栈”好不好接。STM32C5给我的感觉是一台中庸但全面的“工具车”——Cortex-M33内核摆在那里定位正好卡在C0和H5之间的空档比老旧的F1底子新又不像H5那样上来就逼你处理复杂安全特性。这篇文章不打算从寄存器字典抄起而是按我自己从搭环境、生成工程、跑通外设到排障的真实顺序把C5开发中真正决定成败的步骤和坑位写清楚。适合刚拿到C5样片、正从F1/G0/H5迁移过来的开发者也适合被M33的TrustZone和中断模型搞到怀疑人生的朋友。1. 草率移植老工程之前先确认C5的真正身份1.1 C5在芯片家族里到底处于什么位置很多人在拿到C5之后第一反应是“这不就是个加强版F1吗”这个判断只说对了一半。C5确实继承了F1时代的通用控制基因很擅长电机控制、工业传感、简单网关这些中端应用但它用的是Cortex-M33内核不是老旧的Cortex-M3也不是C0那颗M0。内核换代带来的影响远比“性能提升一点”更深远中断控制器、系统控制寄存器、调试接口、内存保护单元的权限模型全都跟着变了。我整理了一个很粗略的定位对照表方便你判断自己该从哪个角度切进C5型号定位内核常见主频等级硬件安全典型目标场景C0M0入门级无或极简小节点、辅助控制、简单传感C5M33中端一百多MHz级别TrustZone可选控制为主、带连接需求F1M3中档无存量项目、传统电机控制H5M33高端TrustZone标配网络安全、复杂网关C5比较聪明的地方在于TrustZone是一个可选项而不是强制项。如果你只是做传统裸机控制完全可以把安全特性先放一边把它当成一颗主打平衡功耗和性能的M33芯片来用。但如果你的项目以后要做固件签名校验、安全升级、密钥管理C5留的这扇门就比F1实在得多。所以正式开始写代码前先想清楚你的项目到底需不需要安全分区这个决定会影响后续整个工程结构。1.2 三个最容易忽略的“新内核”信号第一中断向量表和处理模式变了。M33的异常编号、系统处理模式下的栈指针使用方式和M3/M0有不少差异。你把F1的启动文件直接扔进C5工程往往能编译通过但一复位就卡死或者进入异常后看不出是从哪里崩的。第二外设寄存器风格不兼容。C5虽然外设功能和F1“看起来差不多”但寄存器位域定义、基址映射都沿用了较新组件的风格。我见过一个开发者把F1的定时器初始化代码原封不动迁移过来编译器不报错硬件上就是不出PWM最后查出来是某个分频位域的含义完全变了。这种问题最气人因为代码“看起来全对”。第三时钟树结构变了。C5的PLL配置链路、AHB/APB分频关系和老型号并不一致直接沿用老工程的时钟配置轻则串口乱码重则系统主频直接跑飞。所以动手建工程之前先把参考手册里的时钟树图从头到尾看一遍这一步比多写十行代码都值。2. 开发环境的隐形门槛支持包、调试器固件与链接脚本2.1 芯片支持包装不对后面全是白做C5的开发环境搭建本身不复杂但有一个非常容易踩的坑芯片支持包版本不对。建议使用原厂主推的集成开发环境加上对应的图形化配置工具在新建工程时直接搜索C5型号让工具自动拉取匹配的芯片支持包。如果你用的IDE是老版本支持包缓存也没更新新建工程时可能根本看不到C5这个型号或者生成工程后Flash容量、RAM地址全是错的。我实际遇到过一种情况PACK版本很旧工程能正常生成下载程序时芯片也能连接但烧进去之后程序就像“没烧进去”一样。反复排查之后发现旧版支持包里C5的Flash扇区大小描述是错的导致下载算法写错了扇区划分。这个问题的隐蔽性在于编译、链接、连接全都没报错只有运行结果不正常。所以建议建工程之前先去官网把当前型号对应的最新支持包手动下载安装别完全依赖IDE自动更新。2.2 调试探针未必认识M33第二个隐形门槛在调试链路。Cortex-M33的调试接口底层逻辑和M3/M0不完全一样部分老型号的调试探针如果固件版本太老可能无法正确识别C5的内核。我之前帮朋友排查过一次SWD四根线都接对了供电也没问题探针始终报“Unknown Device”。测了整整一晚上最后把探针固件升级到新版芯片立刻就被识别了。如果你手上正好有一支“用了好几年但一直没升级固件”的兼容探针建议在连C5之前先把厂家固件刷到最新。顺便检查一下调试线和排线质量M33内核调试时的时钟频率如果设得太高劣质杜邦线也会引发随机连接失败。稳妥做法是先在调试器设置里把下载速率降到1MHz左右等稳定跑通了再慢慢往上提。2.3 生成工程后的第一眼检查清单不管你用图形化配置工具生成了多少初始化代码新建工程之后有几件事必须自己亲眼确认一遍检查启动文件是否匹配C5具体型号闪存容量和RAM容量是否与数据手册一致。确认堆栈大小是否够用默认值通常偏小一旦以后加入较多局部变量或标准库调用可能出现不明原因的栈溢出。检查链接脚本里的Flash起始地址。开了TrustZone的工程Flash和RAM会被划分成安全区、非安全区地址空间的摆放方式和普通工程完全不一样不核对清楚链接阶段就会报错。最后看一眼编译器是否启用了M33对应的FPU选项如果用到了硬件浮点编译选项错了虽然也能跑但性能会明显偏弱。这四步我每次都会做哪怕是从官方例程复制过来的工程也一样。因为一个看起来能编译的工程和能在C5上稳定运行的工程中间差的就是这些细节。3. 初始化代码交给工具但时钟和引脚必须看懂3.1 为什么我建议先让图形化配置工具生成长代码开发C5时我个人的判断是起步阶段不要抗拒图形化配置工具。工具生成的代码量大、冗余多但它能保证一件事——RCC时钟使能和复位逻辑是成对出现的。M33内核外设数量多、地址映射复杂手写寄存器初始化有一万个机会漏掉某个外设的时钟开关而漏掉RCC时钟的结果往往不是编译错误而是运行时彻底没反应或进HardFault。当然这不是让你无脑依赖工具。用工具生成代码的目的是拿到一个可靠基线之后迭代项目时还是要回到寄存器层面去读、去推导、去验证。用工具跑通再把关键部分手动接管是我在C5上最推荐的节奏。3.2 时钟树配置的实操与验证方法时钟配置是C5开发里最值得花心思的一步。下面是一个很典型的配置思路示例注意这是示意风格代码重点看流程// 目标系统时钟HSE作为PLL输入 RCC_OscInitTypeDef osc {0}; osc.OscillatorType RCC_OSCILLATORTYPE_HSE; osc.HSEState RCC_HSE_ON; // PLL参数需要按照目标频率和外部晶振计算 osc.PLL.PLLState RCC_PLL_ON; osc.PLL.PLLSource RCC_PLLSOURCE_HSE; osc.PLL.PLLM 1; // 外部晶振先分频 osc.PLL.PLLN 20; // 倍频倍数 osc.PLL.PLLP 2; // PLL主输出分频 if (HAL_RCC_OscConfig(osc) ! HAL_OK) { // 这里的错误处理绝不是摆设时钟起不来后面全是空中楼阁 Error_Handler(); }PLL参数怎么选核心是反推知道外部晶振频率、知道目标系统时钟频率从数据手册的PLL参数表格里找到合法组合。有人习惯把HSE不分频直接送进PLL但如果晶振频率太高或太低都不行一定要看手册给出的输入范围。配置完成后光编译通过不算成功必须实际验证。验证方法有两个层次。简单粗犷的办法是在调试器里打开外设寄存器窗口查看RCC相关寄存器里系统时钟源和总线分频结果确认和预期一致。更可靠的办法是跑一个已知频率的方波比如让某个定时器输出一个频率精确的信号再用另一路输入捕获或示波器测量两边对得上才能证明时钟树真的按预期工作。3.3 引脚复用AF值坑得极其隐蔽C5的GPIO复用功能编号未必和你手上旧型号一致。同一个串口的收发引脚在F1上可能复用到了AF7在C5上可能改到了AF8甚至别的编号具体必须查参考手册的GPIO复用映射表。我见过一个迁移项目UART和SPI用得很多开发者把旧工程的引脚配置复制过来编译全过但串口发不出数据、SPI读到全0查到最后全是AF编号错位。用图形配置工具最大的好处就在这它会自动把引脚的AF值填成对的。问题是有些开发者生成代码之后再手动调整引脚功能或者干脆手写AF值一改就错。记住一条铁律C5上查引脚功能永远以当前型号的复用映射表为准别依赖肌肉记忆。如果你要手动改GPIO配置至少先在数据手册里搜引脚号把那一行的所有复用功能看全再动手。4. 让第一个程序具备调试能力日志、PWM和断点4.1 串口日志优先于点灯很多教程让你第一个程序点LED但在C5这种中端芯片上我觉得第一件事应该是把串口日志跑通。点LED只能证明“程序活着”串口日志却能把程序“讲到哪一步、卡在哪一行”告诉你这对后续所有外设调试都至关重要。用串口打印的核心是重定向标准输出函数下面是常见的串口重定向思路int _write(int file, char *ptr, int len) { // 把len字节逐个写入调试串口的发送寄存器 for (int i 0; i len; i) { while (__HAL_UART_GET_FLAG(debug_uart, UART_FLAG_TXE) RESET); debug_uart.Instance-TDR ptr[i]; } return len; }之后就可以在main函数里直接调用printf在串口助手观察输出。调试串口的选择上建议优先用一个完整UART别在初期就碰低功耗串口因为低功耗串口的时钟源通常是低速晶振波特率上限和分频逻辑都和普通UART不太一样容易把问题复杂化。等主流程都稳定了再去研究低功耗串口的优化那是后话。4.2 PWM频率不是算完公式就结束定时器输出PWM是最常见的控制类需求。C5的定时器分频器位数、时钟来源和不同的总线有关直接决定你的频率计算公式。提醒一个非常经典的知识点定时器时钟不总是等于系统主频如果定时器挂载的总线分了频那么部分定时器的时钟可能是总线时钟的倍频关系因为定时器为了享受更高分辨率往往挂在“不分频”或“倍频”的时钟链上。假设定时器时钟是80MHz你想输出1kHz的方波典型的参数就是预分频器设为79自动重载寄存器设为999输出比较值和占空比按需求调整。算完之后不要只盯着数值还要配合示波器看实际输出因为任何一步分频配置错了结果都会对不上。4.3 断点和寄存器窗口是外设透视镜第一次跑到C5工程时建议把调试器的这几个窗口用起来外设寄存器窗口、实时变量窗口、反汇编窗口还有调用栈窗口。很多人调试外设不看外设寄存器窗口只会打printf效率低很多。比如串口数据收不到点开UART外设寄存器看状态标志位能直接判断数据到底有没有进入接收缓冲还是中断没有触发。再比如DMA传输卡住直接看DMA计数寄存器就能发现是通道没使能还是传输长度被配成了0。调试中还有一个很实用的手段在线修改变量。程序停在断点时直接在变量窗口把某个标志位改成想要的值强制程序走某条分支可以帮助快速验证逻辑。这种“强制驱动”的调试方式比反复重新烧录快得多。5. 常规项目必碰的外设三件套串口DMA、ADC和低功耗唤醒5.1 串口DMA不定长接收用空闲中断配合环形缓冲大多数C5项目离不开串口命令交互而串口数据是不定长的。最佳实践是DMA加串口空闲中断让DMA把数据搬进缓冲区收到一帧结束的空闲中断后读DMA计数寄存器算出本次实际接收长度再把数据丢给环形缓冲区处理。示意逻辑如下void UART_IdleCallback(void) { // 根据DMA剩余计数反推本次收到的字节数 uint16_t len BUF_SIZE - dma_handle.Instance-NDTR; RingBuffer_Write(rx_ring, rx_buf, len); // 重置DMA接收指针和计数准备下一帧 dma_handle.Instance-NDTR BUF_SIZE; }这里面有两个容易踩的坑。第一个是DMA缓冲区和CPU访问之间存在竞争缓冲区放在普通RAM没问题但如果你开了TrustZoneDMA源地址和目标地址需要具有匹配的安全属性否则传输会直接失败。第二个是清空闲中断标志的时序。没有正确清除标志可能收完一帧后立刻又进一次中断或者干脆之后不再触发表现就是“第一帧正常后面全乱”。这类问题用调试器单步观察标志位状态往往一眼就能定位。5.2 ADC多通道采集校准不是可选项C5的ADC用起来比较直接但有一个细节常被忽略上电后要等ADC时钟稳定并且要做校准。不做校准的后果是采样值整体偏移尤其在环境温度变化明显的场景里偏差会大到让你误以为是传感器坏了。多通道采集时每个通道的采样时间也要单独看。输入源阻抗高、采样时间设短测量值就会偏小这属于典型配置问题。我在实测中遇到过一种情况某个通道读到的值始终比万用表测量的真实电压低百分之几调采样周期到最大之后立刻准确。原因就是前级信号源带负载能力弱采样时间太短采样电容还没充满就被切走了。所以遇到ADC数值不对先按这个顺序排查参考电压是否正确、采样时间是否足够、校准是否执行、引脚是否被配置成了纯模拟模式。千万别一上来就怀疑芯片坏了C5的ADC翻车概率远低于逻辑上的坑。5.3 低功耗唤醒醒不来多半是唤醒源列表没看全C5支持多种低功耗模式从最简单的睡眠到深度的停止模式每一档能用的唤醒源都不一样。最头疼的问题就是“我明明配了串口唤醒进停止模式之后就是醒不来”。遇到这种情况先去查数据手册里该低功耗模式下支持的唤醒源列表很多串口在停止模式下并不具备唤醒能力能唤醒的只有专门的低功耗串口、低功耗定时器、RTC闹钟等少数外设。我遇到过一个项目开发者在停止模式下用普通串口外部中断唤醒折腾了好几天最后换成低功耗定时器做周期性唤醒问题立刻解决。这不是C5刁难人而是每一种低功耗模式的“限制列表”从硬件层面就定死了软件只能顺着它走。进低功耗之前也要注意把休眠前处于挂起状态的中断标志清干净否则芯片一进休眠又会被自身的残留中断立刻唤醒表现为“功耗完全降不下去”。5.4 TrustZone的务实建议先把全部精力放在功能上如果你暂时用不到安全启动、安全升级这些特性我强烈建议开发早期不要开启TrustZone。每次新建C5工程的时候工具会问你是否启用TrustZone直接选择不启用就好。这么做的好处是工程结构和老式裸机项目几乎一样中断、外设全都在非安全世界里正常工作调试器也能直接看到全部内存和外设排障效率高一大截。当然也要知道它的代价芯片原厂下载工具在修改选项字节时必须整片擦除一旦你关掉TrustZone之后又想重新开启整个芯片都会被清空这个操作在某些场景下不可逆。所以如果你的产品规划里明确要用安全功能那就在方案阶段定好别等软件写了一半再切换那会带来一场灾难性的返工。6. 把HardFault当作朋友一次典型崩溃的排查链路6.1 发生HardFault时我按这个顺序排错C5开发中遇到HardFault几乎是必然的关键是怎么高效定位。我的习惯是严格按下面几步走先看LR寄存器判断程序是卡在线程模式还是处理器模式。如果LR显示回到了某个异常返回值通常意味着异常是在中断处理过程中触发的。接着看错误状态寄存器它会告诉你这次HardFault是访问违规、未定义指令还是总线错误。这几类原因对应的代码位置完全不同方向对了才能少走弯路。然后从当前栈顶抓取返回地址配合反汇编窗口直接定位到实际崩溃的指令。这一步非常重要因为它绕过了“函数里报错”这种模糊信息直接指向那条具体的汇编指令。如果开了TrustZone还要检查是不是有代码尝试访问了Secure区域地址这在M33上会直接被安全属性拦截从寄存器里看到的现象就是一次奇怪的访问违规。定位链路完整走完HardFault就不再是黑盒而成了很直接的诊断线索。6.2 一张自查表解决80%的初始化失败配合上面的思路结合我自己和身边开发者的反馈我整理了一份C5外设调试自查表非常实用问题现象优先检查顺序串口输出乱码系统时钟频率、外部晶振实际值、波特率分频结果定时器不工作RCC时钟使能、定时器时钟源、引脚AF、输出通道ADC读数为0或满量程ADC校准、采样时间、参考电压、GPIO模拟模式中断进不去NVIC使能、外设中断使能位、中断标志未清、优先级分组低功耗醒不来该模式下支持的唤醒源、休眠前残留中断标志这张表的核心思路是先排除时钟、再查引脚、最后才怀疑外设本身。芯片外设被误伤的案例很少大部分都是“时钟没开、引脚配错、标志没清”这三件事轮流交错。6.3 编译器优化和调试器的矛盾最后一个坑来自编译优化。很多人程序写完直接开编译器优化调试时会发现变量被优化掉、断点乱跳、执行顺序和源码对不上。C5开发初期我建议在调试配置里把优化等级设为不优化等所有功能都验证通过再升级到最终优化档位并且把外设时序相关的代码从头到尾再测一遍。优化开启后中断失效率、延时误差都可能微妙变化这些不是C5独有但在M33上出现频率不低。切换优化等级后如果出现异常别急着怀疑C5先看编译器是否使用了旧的预编译宏清理重编一次往往就好。最后说一个不算技术的建议C5的资料相比老型号确实“少”但它的少是相对的前提是你愿不愿意啃参考手册。我每次迁移到新平台都先把原厂文档按时钟树、中断表、外设寄存器、勘误表四类分好再建一个纯调试用的空工程。任何不确定的现象都在这个工程里用一个外设单独复现而不是堆在一大堆业务代码里排查。这样一来真遇到C5的诡异问题定位时间能缩短一大半。如果你此刻正卡在某个C5的疑难杂症上不妨也试试把代码精简成几十行问题往往会自己浮到表面上。

相关新闻

Maya 2022下载安装全攻略:版本选型、渠道判断与避坑指南

Maya 2022下载安装全攻略:版本选型、渠道判断与避坑指南

简介:这份资源为 Autodesk Maya 2022 三维动画软件安装包,面向影视广告、角色动画、电影特技等领域的 CG 从业者与三维设计学习者,尤其适合需要搭建本地制作环境、练习建模与渲染的中初级用户。Maya 2022 集三维计算机动画、建模、模拟、渲染…

2026/10/13 1:29:08 阅读更多 →
计算机发展史的本质:四次技术范式跃迁的底层逻辑

计算机发展史的本质:四次技术范式跃迁的底层逻辑

/* 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 1:29:08 阅读更多 →
飞飞影视导航系统:本地视频库离线索引与HTML导航生成工具

飞飞影视导航系统:本地视频库离线索引与HTML导航生成工具

/* 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 1:29:08 阅读更多 →

最新新闻

Reclilisib:从PI3K激动剂到选择性辐射保护剂的双重角色

Reclilisib:从PI3K激动剂到选择性辐射保护剂的双重角色

做肿瘤放疗研究的朋友应该都有过这种纠结:治疗窗口太窄,射线过去,肿瘤细胞和正常组织一起遭殃。我们这些年一直在找"选择性辐射保护剂"——最好能保护正常细胞,却不给肿瘤细胞留活路。我第一次注意到Reclilisib&#xf…

2026/10/13 2:18:27 阅读更多 →
MFC连接MySQL实战:ODBC封装、CRUD与避坑手册

MFC连接MySQL实战:ODBC封装、CRUD与避坑手册

简介:这是一套面向MFC桌面应用开发者的MySQL数据库访问示例工程,核心演示如何借助ODBC标准数据库接口,在C程序中完成连接建立、SQL查询、结果集遍历与数据更新等常用操作。压缩包内共含117个文件,压缩后约181KB;其中49…

2026/10/13 2:18:27 阅读更多 →
从Java转运营第5天:用技术思维做抖音新号,先学会拆解对标账号

从Java转运营第5天:用技术思维做抖音新号,先学会拆解对标账号

今天是我从 Java 转运营的第 5 天,也是正式开始折腾抖音新号起号的日子。说实话,从写完第一版账号简介到研究“到底该发什么”,我踩的坑比写的需求还多。如果把起号比作一次系统上线,那我 Day05 最大的收获就是:先别急…

2026/10/13 2:18:27 阅读更多 →
安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操

安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操

安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操 【免费下载链接】winlator Android application for running Windows applications with Wine and Box86/Box64 项目地址: https://gitcode.com/GitHub_Trending/wi/winlator 手机里下了个 .…

2026/10/13 2:18:27 阅读更多 →
eksctl v0.149.0 发布解析:AWS 区域环境变量修复与 eksctl-io 组织迁移

eksctl v0.149.0 发布解析:AWS 区域环境变量修复与 eksctl-io 组织迁移

云原生容器编排DevOps 【免费下载链接】eksctl The official CLI for Amazon EKS 项目地址: https://gitcode.com/gh_mirrors/ek/eksctl 点击查看 免费下载 本指南围绕 eksctl 官方 CLI 的 v0.149.0 发布说明展开,逐项解析该版本引入的功能更新、两个关…

2026/10/13 2:18:27 阅读更多 →
Win11升级后应用打不开?从升级机制到修复方案全解析

Win11升级后应用打不开?从升级机制到修复方案全解析

最近一段时间,我这边处理最多的求助不是软件本身崩溃,而是同一句话:升完 Win11 之后,XX 应用打不开了。有的是设备厂商的配置工具,点开就没反应;有的是行业软件启动后直接闪退;还有的是虚拟机一…

2026/10/13 2:17:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/12 0:16:38 阅读更多 →
影刀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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →