1. 为什么“铁头山羊”的STM32新版教程值得从头跟一遍如果你最近在搜“stm32入门教程”大概率已经刷到过“铁头山羊”这个名字。我最早接触这套教程是在一个学弟的推荐下当时他拿着一块最小系统板跟着视频一步步点灯、串口打印、定时器中断两周时间就把基础外设跑了个遍。后来我自己也把新版教程完整过了一遍发现它和市面上很多“念手册式”的教学完全不是一个路子——它更像一个做过实际项目的工程师坐在你旁边告诉你“这一步为什么要这么干”“哪里容易翻车”“怎么查问题”。STM32入门这件事说难不难说简单也不简单。难的是你面对的是一个拥有几十个外设、上百个寄存器、多种时钟源和复杂中断系统的32位微控制器简单的是只要你把GPIO、时钟、中断、定时器、串口这几块吃透后面学什么外设都是同一套逻辑。铁头山羊新版教程最大的价值就是把这套逻辑用非常接地气的方式讲清楚了而且新版在旧版基础上补了不少实战内容比如STM32CubeMX的配合使用、HAL库与标准库的对比、调试技巧和常见故障排查。这篇文章不是教程的简单复述而是我跟着这套教程走完一遍之后结合自己踩过的坑和实际项目经验把STM32入门阶段最核心的知识点、最容易被忽略的细节、以及最值得反复练习的实操环节系统地梳理出来。无论你是完全零基础的小白还是学过51单片机想进阶的爱好者或者是被毕业设计逼着上手的同学都能从下面这些内容里找到可以直接抄作业的步骤和避坑指南。2. 入门前的整体设计与学习路线拆解2.1 为什么STM32入门不能“从寄存器手册第一页开始看”很多人学STM32的第一个误区就是买了一块开发板然后打开参考手册从第一页开始啃。结果看了三天连GPIO都没点亮点。这不是你笨而是方法错了。STM32的参考手册有上千页寄存器描述密密麻麻如果你没有实际的操作场景去对应看再多也记不住。铁头山羊新版教程的思路很聪明先用最直观的方式让你看到结果再回头解释原理。比如点灯这一课它不会一上来就讲BSRR寄存器的每一位是什么意思而是先让你用CubeMX生成代码烧进去看到LED亮了然后再告诉你“刚才那个HAL_GPIO_WritePin函数背后其实操作了哪个寄存器”。这种“先跑通再深挖”的路径对初学者来说心理负担小很多也更容易建立信心。我自己的经验是STM32入门阶段应该遵循“外设驱动为主、寄存器理解为辅”的原则。你不需要背下来每个寄存器的地址但你需要知道当你调用一个库函数时它大概动了哪些硬件资源。这样出了问题你才有排查的方向而不是对着代码发呆。2.2 新版教程的学习路线图与阶段目标跟着铁头山羊新版走整个入门阶段可以分成四个台阶每个台阶都有明确的目标和验收标准。我把它整理成下面这张表你可以对照自己的进度看看走到哪了。阶段核心内容验收标准建议耗时第一阶段开发环境搭建、GPIO输入输出、按键检测能独立点亮LED、读取按键状态、实现按键控制LED3-5天第二阶段中断系统、定时器基础、串口通信能用定时器做精准延时、串口收发数据、中断响应按键1-2周第三阶段PWM输出、输入捕获、ADC采样能控制舵机、测量频率、读取电位器电压1-2周第四阶段DMA、I2C/SPI通信、综合小项目能驱动OLED、读写EEPROM、完成一个多外设协同的小项目2-3周这个路线不是死的你可以根据自己的基础调整。比如你之前用过Arduino那第一阶段可能一天就过了如果你连C语言指针都不太熟那在第二阶段学中断回调的时候可能会卡一下需要回头补补C语言基础。2.3 工具选型Keil、CubeMX、VS Code到底怎么配STM32开发环境的搭建是劝退新手的第一个大坑。铁头山羊新版教程里主要用的是Keil MDK但同时也提到了CubeMX和VS Code的配合方案。我三种方式都试过说说我的实际感受。Keil MDK的优势是生态成熟、调试方便、教程资料多缺点是界面老旧、代码补全弱、免费版有32KB限制。对于入门来说32KB其实够用点灯、串口、定时器这些例程编译出来通常也就几KB到十几KB。但如果你后面要加FreeRTOS或者文件系统可能就会超。CubeMX是一个图形化配置工具你可以用鼠标点选引脚功能、时钟树、外设参数然后一键生成初始化代码。它的最大价值是帮你避开时钟配置和引脚复用这些容易出错的地方。我建议新手一定要学会用CubeMX哪怕你后面不用HAL库用它来查引脚定义和时钟树也非常方便。VS Code加PlatformIO或者STM32扩展的方案适合有一定基础、追求开发体验的人。代码补全、Git集成、终端操作都很舒服但配置过程对新手不太友好尤其是调试器的配置容易出问题。我的建议是入门阶段先用Keil加CubeMX的组合把主要精力放在理解外设原理上等你有了一定基础再折腾VS Code。注意安装Keil5的时候如果你之前装过Keil C51需要注意安装路径不要冲突。另外STM32的芯片包需要单独下载安装新版教程里会告诉你从哪里获取。安装完芯片包后最好用ST-Link Utility或者STM32CubeProgrammer测试一下能否识别到芯片这一步能帮你提前排除很多下载器驱动的问题。3. 核心细节解析与实操要点3.1 GPIO看似最简单实则最容易埋坑的外设GPIO是STM32入门的第一课也是很多人觉得“太简单了没什么好讲”的地方。但我在实际带新人的过程中发现GPIO的坑其实不少。比如推挽输出和开漏输出的区别什么时候该用上拉电阻输入模式下的浮空、上拉、下拉到底怎么选这些问题如果不搞清楚后面驱动一些特殊外设的时候就会莫名其妙失败。铁头山羊新版教程在讲GPIO的时候用了一个很形象的比喻推挽输出就像两个人推拉门一个负责推一个负责拉能主动输出高电平和低电平开漏输出就像只有一个人拉门只能主动拉低高电平需要外部上拉电阻来提供。这个比喻我后来在给学弟讲I2C总线的时候又用了一次因为I2C的SDA和SCL就是典型的开漏输出加外部上拉。实操层面点灯例程里有一个细节值得注意LED的限流电阻怎么选。假设你用的是红色LED正向压降约1.8V工作电流取5mA到10mASTM32的GPIO输出高电平约3.3V那么限流电阻R (3.3 - 1.8) / 0.01 150欧姆。实际选用220欧姆或330欧姆都可以亮度会稍暗但更安全。如果你直接用0欧姆电阻或者不接电阻短时间可能没事但长期运行LED和GPIO口都有损坏风险。按键检测这块新版教程重点讲了消抖。机械按键在按下和松开的瞬间会产生几十毫秒的抖动如果不处理一次按下可能会被识别成多次。最简单的消抖方法是延时确认检测到按键状态变化后延时20ms再读一次如果状态一致就认为有效。更优雅的方式是用定时器中断定期扫描按键配合状态机实现。我建议新手先用延时消抖把功能跑通等学到定时器的时候再回来优化。3.2 时钟树STM32的“心脏”配置错了什么都跑不起来时钟树是STM32入门阶段最抽象、也最容易被跳过的一环。很多人用CubeMX生成代码后能跑就以为时钟配置不重要。但如果你哪天发现串口波特率不对、定时器计时不准、ADC采样值跳动十有八九是时钟树没配对。STM32的时钟源主要有四种HSI内部高速时钟通常8MHz或16MHz、HSE外部高速时钟通常接8MHz晶振、LSI内部低速时钟约32kHz、LSE外部低速时钟通常接32.768kHz晶振。系统时钟SYSCLK可以从HSI或HSE经过PLL倍频得到然后分频给AHB、APB1、APB2等总线。铁头山羊新版教程里有一个很实用的建议用CubeMX配置时钟树的时候直接在图形界面上输入你想要的最高频率比如STM32F103C8T6最高72MHzCubeMX会自动帮你算出PLL的倍频和分频系数。但你要知道它为什么这么算否则换个芯片或者换个晶振频率你就懵了。我举个例子说明时钟配置对定时器的影响。假设你用TIM2做一个1ms的定时中断TIM2挂在APB1总线上。如果APB1的预分频系数为2那么APB1时钟为36MHz但定时器时钟会是APB1的2倍即72MHz这是STM32的一个特殊规则当APB预分频不为1时定时器时钟等于APB时钟的2倍。如果你不知道这个规则按36MHz去算预分频值定时时间就会差一倍。实操心得每次新建工程后先别急着写业务代码用串口打印一下SystemCoreClock的值确认系统时钟和你预期的一致。这个习惯能帮你省下大量排查时间。3.3 中断系统从“轮询思维”到“事件驱动思维”的跨越学完GPIO之后很多人会习惯用轮询的方式写代码在主循环里不断检查按键状态、检查串口有没有收到数据。这种方式在小程序里能用但一旦功能变多主循环就会变得又长又卡响应也不及时。中断就是解决这个问题的核心机制。STM32的中断系统涉及NVIC嵌套向量中断控制器、中断优先级、中断服务函数等概念。铁头山羊新版教程在讲中断的时候特别强调了优先级分组的概念。STM32的中断优先级分为抢占优先级和响应优先级抢占优先级高的中断可以打断正在执行的低优先级中断响应优先级只在同时发生多个中断时决定谁先执行。新手最容易犯的错误是随便设置优先级导致中断嵌套混乱。我的建议是入门阶段先把所有中断的抢占优先级设成一样的响应优先级根据需要排个序。等你对中断机制理解更深了再考虑用抢占优先级做嵌套。串口接收中断是一个很好的练习场景。你可以配置串口在接收到一个字节时触发中断在中断服务函数里把数据存到缓冲区主循环再慢慢处理。这样即使主循环在忙其他事情也不会丢数据。新版教程里还提到了空闲中断加DMA的进阶用法那个适合在需要接收不定长数据的时候用入门阶段可以先了解思路。3.4 定时器STM32最强大的外设之一值得多花时间定时器是STM32里功能最丰富的外设没有之一。基本定时、PWM输出、输入捕获、编码器接口、触发ADC、DMA请求这些功能都离不开定时器。铁头山羊新版教程把定时器拆成了好几节课从最简单的定时中断讲到PWM和输入捕获节奏安排得比较合理。定时器的核心概念是预分频器PSC和自动重装载寄存器ARR。定时时间 (PSC 1) × (ARR 1) / 定时器时钟频率。假设定时器时钟72MHz你想要1ms中断一次可以设PSC71ARR999这样(711)×(9991)/72000000 0.001秒 1ms。PWM输出是定时器最常用的功能之一。控制舵机需要50Hz的PWM也就是周期20ms。假设定时器时钟72MHzPSC设为71则计数频率为1MHzARR设为19999周期就是20ms。然后通过修改CCR寄存器的值来调整占空比CCR从500到2500对应舵机0度到180度。这个计算过程我在第一次做舵机控制的时候算了半天后来发现只要记住公式换任何频率都是套进去算。输入捕获可以用来测量外部信号的频率和脉宽。新版教程里讲了测频法和测周法两种思路。测频法是在固定时间内数脉冲个数适合高频信号测周法是在一个信号周期内数定时器计数个数适合低频信号。实际项目中我通常用输入捕获的PWMI模式同时测量频率和占空比用来解码红外遥控信号或者读取霍尔传感器的转速。4. 实操过程与核心环节实现4.1 从零搭建一个STM32工程标准库与HAL库的选择铁头山羊新版教程在工程搭建这块给了两种方案标准库和HAL库。标准库是ST早期推出的直接操作寄存器代码效率高资料多但ST已经不再维护了。HAL库是现在ST主推的配合CubeMX使用非常方便跨芯片移植性好但代码体积大执行效率略低。我的建议是入门阶段用HAL库加CubeMX快速把外设跑通建立信心。等你对STM32的运作机制有了整体认识再回头看看标准库的代码理解寄存器层面的操作。如果你是为了做毕业设计或者找工作的项目HAL库足够应付大多数场景企业里用HAL库的也不少。下面是一个用CubeMX生成HAL库工程的基本流程。首先在CubeMX里选择你的芯片型号比如STM32F103C8T6。然后配置时钟源在RCC里把HSE设为Crystal/Ceramic Resonator。接着配置时钟树在Clock Configuration标签页里把HCLK拉到72MHz。再配置GPIO比如把PC13设为GPIO_Output用于板载LED。最后在Project Manager里设置工程名称、路径、工具链为MDK-ARM点击Generate Code。生成的代码里main函数中会自动调用SystemClock_Config和MX_GPIO_Init。你只需要在while(1)循环里加上HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13)和HAL_Delay(500)编译下载就能看到LED闪烁。这个流程看起来简单但每一步都有细节。比如时钟树配置不对HAL_Delay的延时就不准GPIO模式选错LED可能不亮或者亮度异常。4.2 串口通信实战从printf重定向到自定义协议串口是STM32调试和通信最常用的接口。铁头山羊新版教程里花了不少篇幅讲串口从最基础的发送一个字节到printf重定向再到接收中断和空闲中断。我重点说说printf重定向和自定义协议这两个实用环节。printf重定向的原理是重写C标准库的fputc函数让printf输出的字符通过串口发送出去。在Keil MDK里你需要勾选Use MicroLIB然后添加下面这段代码#include stdio.h int fputc(int ch, FILE *f) { HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, 0xFFFF); return ch; }这样你就可以在代码里直接用printf(System Clock: %d\r\n, SystemCoreClock)来打印调试信息了。注意串口助手的波特率要和代码里配置的一致通常用115200。自定义协议是实际项目中常用的做法。比如你可以定义一帧数据帧头0xAA 0x55然后是命令字、数据长度、数据内容、校验和。接收端用状态机解析收到完整帧后根据命令字执行对应操作。新版教程里有一个简单的例子用串口发送指令控制LED的开关。这个例子虽然简单但把串口收发、数据解析、命令执行的流程都串起来了非常适合作为第一个综合练习。4.3 定时器PWM输出控制舵机和呼吸灯PWM输出的实操我建议从呼吸灯开始因为LED的亮度变化肉眼可见调试起来很直观。配置TIM3的通道1为PWM输出模式PSC设为71ARR设为999这样PWM频率为72MHz/(72×1000)1kHz。然后在主循环里逐渐增加CCR值再逐渐减小就能看到呼吸灯效果。舵机控制是PWM的经典应用。舵机需要50Hz的PWM信号高电平时间0.5ms到2.5ms对应0度到180度。配置TIM3的PSC71ARR19999得到50Hz的PWM。CCR值设为500对应0.5ms1500对应1.5ms2500对应2.5ms。你可以写一个函数输入角度值自动计算CCRvoid Servo_SetAngle(float angle) { uint16_t ccr (uint16_t)(500 angle * (2000.0 / 180.0)); __HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, ccr); }这个函数把0到180度映射到500到2500的CCR值。实际使用中不同舵机的脉宽范围可能略有差异你可以通过实验微调。4.4 ADC采样与滤波读取电位器和传感器ADC是STM32连接模拟世界的重要外设。铁头山羊新版教程里用ADC读取电位器电压作为例子这个实验简单但涵盖了ADC配置的主要步骤使能ADC时钟、配置GPIO为模拟输入、配置ADC参数、校准、启动转换、读取结果。STM32F103的ADC是12位的转换结果范围0到4095对应电压0到3.3V。实际电压 ADC值 × 3.3 / 4095。如果你用ADC读取一个光敏电阻分压的电压就可以根据电压值判断环境亮度。ADC采样值容易跳动这是正常现象。简单的滤波方法是连续采样多次去掉最大值和最小值然后取平均。比如采样10次排序后去掉最大和最小的各2个剩下6个求平均。这个算法在C语言里用冒泡排序就能实现不需要复杂的数学库。新版教程里还提到了用定时器触发ADC采样配合DMA搬运数据这样可以实现固定采样率的连续采集适合做音频采样或者振动分析。5. 常见问题与排查技巧实录5.1 下载失败与芯片识别问题STM32新手遇到的第一个拦路虎往往是下载失败。ST-Link连上电脑后Keil提示“No ST-Link detected”或者“Cannot access target”。这个问题我遇到过无数次总结下来主要有几个原因。驱动问题是最常见的。ST-Link需要安装驱动Windows 10以上系统通常会自动识别但有时候会识别成其他设备。你可以在设备管理器里查看如果ST-Link显示黄色感叹号就需要手动安装驱动。新版教程里推荐用STM32CubeProgrammer它自带驱动安装功能比单独装ST-Link Utility省事。接线问题也很常见。SWD接口需要连接SWCLK、SWDIO、GND、3.3V四根线少一根都不行。有些开发板上的SWD接口丝印不清晰你需要查原理图确认引脚顺序。另外如果目标板由外部电源供电ST-Link的3.3V就不要接了否则可能冲突。还有一种情况是芯片被锁了。如果你之前配置了读保护或者禁用了SWD引脚ST-Link就连不上了。这时候需要用STM32CubeProgrammer的连接设置里选择“Under reset”模式按住复位键点击连接然后在选项字节里解除读保护。这个操作有风险操作前最好确认芯片里没有重要数据。5.2 串口乱码与波特率不匹配串口打印乱码是另一个高频问题。你代码里配置的是115200串口助手也设的115200但打印出来就是一堆问号或者乱码。这种情况我排查过很多次原因通常有三个。第一个是时钟配置错误。如果你的系统时钟不是预期的72MHz串口的波特率就会偏。比如你实际系统时钟是64MHz但按72MHz去算波特率误差超过3%就会乱码。解决办法是用示波器或者逻辑分析仪测一下串口TX引脚的实际波特率或者用另一个已知正常的串口设备来对比。第二个是串口助手的编码设置。有些串口助手默认用GBK编码而你代码里发送的是UTF-8的中文字符串显示出来就是乱码。把串口助手改成UTF-8或者只发送英文和数字就能排除这个问题。第三个是硬件连接问题。TX和RX要交叉连接TX接RXRX接TX。有些人直接TX接TX那肯定收不到数据。另外如果通信距离较长或者波特率较高可能需要检查信号质量必要时降低波特率试试。5.3 中断不响应或反复进入中断中断配置好了但就是不响应或者一进中断就出不来这两种情况在新手代码里都很常见。中断不响应首先要检查NVIC是否使能了对应的中断通道。在CubeMX里配置中断时NVIC标签页里要勾选Enable。如果你是用代码手动配置的要调用HAL_NVIC_SetPriority和HAL_NVIC_EnableIRQ。其次要检查中断服务函数的名称是否正确STM32的中断服务函数名是固定的比如EXTI0_IRQHandler写错了就不会被调用。反复进入中断通常是因为中断标志没有清除。比如按键中断如果你在中断服务函数里没有清除EXTI的挂起位中断会一直触发。HAL库的GPIO外部中断回调函数HAL_GPIO_EXTI_Callback里HAL库已经帮你清了标志但如果你用的是寄存器操作或者标准库就需要手动清除。还有一种情况是中断优先级配置不当导致的问题。比如你在高优先级中断里调用了HAL_Delay而HAL_Delay依赖SysTick中断如果SysTick的优先级低于当前中断就会死等。所以中断服务函数里尽量只做标志位设置和数据搬运耗时的处理放到主循环里做。5.4 常见问题速查表现象可能原因排查方法解决措施下载失败驱动未装、接线错误、芯片被锁设备管理器查看、检查SWD接线、用CubeProgrammer连接装驱动、重新接线、解除读保护串口乱码时钟配置错误、波特率不匹配、编码问题打印SystemCoreClock、换串口助手、测TX波形修正时钟树、统一波特率、改编码中断不响应NVIC未使能、函数名错误、优先级问题检查NVIC配置、核对启动文件中的中断向量名使能中断、修正函数名、调整优先级LED不亮GPIO模式错误、限流电阻过大、引脚接错万用表测电压、查原理图、换引脚测试改推挽输出、换电阻、修正接线定时器不准时钟树配置错误、PSC/ARR计算错误用示波器测输出波形、打印时钟频率重新计算PSC/ARR、确认定时器时钟ADC值跳动参考电压不稳、采样时间太短、干扰测VDDA电压、增加采样时间、加滤波电容稳定电源、调采样周期、软件滤波避坑技巧每次遇到问题先别急着改代码。用万用表、示波器或者调试器看一下硬件状态确认是硬件问题还是软件问题。我见过太多人对着代码改了半天最后发现是杜邦线断了或者电源没接。6. 从入门到进阶项目实战与学习资源推荐6.1 适合练手的STM32小项目学完基础外设之后一定要做几个综合项目把知识串起来。铁头山羊新版教程里有一些项目案例我结合自己的经验再补充几个适合入门后练手的。第一个是超声波测距加OLED显示。用HC-SR04超声波模块测距通过定时器输入捕获读取回响信号的高电平时间计算出距离再用I2C驱动OLED显示出来。这个项目涵盖了GPIO、定时器、输入捕获、I2C通信难度适中效果直观。第二个是串口控制的PWM调光系统。上位机通过串口发送指令STM32解析指令后调整PWM占空比控制LED亮度或者电机转速。这个项目可以练习串口协议设计和PWM输出如果加上PID算法还能做成闭环调速系统。第三个是基于STM32的环境监测节点。用DHT11或者SHT30采集温湿度用光敏电阻或者BH1750采集光照数据通过串口或者无线模块发送到上位机。这个项目适合作为毕业设计的雏形后续可以扩展加入数据存储、报警、远程监控等功能。6.2 调试工具与技巧的进阶入门阶段用Keil的调试功能就够了但如果你想提高效率有几个工具值得了解一下。逻辑分析仪是调试时序问题的利器。比如I2C通信失败、SPI数据错位、PWM波形异常用逻辑分析仪抓一下波形一眼就能看出问题。入门级的8通道逻辑分析仪价格不贵配合开源软件使用性价比很高。STM32CubeMonitor是ST官方推出的可视化调试工具可以实时查看变量变化、绘制曲线。比如你在调PID参数的时候用CubeMonitor把设定值和实际值画出来比串口打印数字直观得多。另外学会看反汇编和寄存器窗口也是进阶必备技能。在Keil调试模式下你可以查看外设寄存器的当前值对照参考手册确认配置是否正确。比如串口发送不出去你可以看看USART_CR1的UE位和TE位有没有置1USART_SR的TXE位是不是在等待。6.3 学习资源与社区除了铁头山羊的教程还有一些资源值得推荐。ST官方的参考手册和数据手册是最终权威遇到不确定的地方一定要查手册。HAL库的源码也是很好的学习材料你可以看看HAL_GPIO_Init函数内部是怎么操作寄存器的。社区方面国内的电子论坛和开源社区有很多STM32的讨论帖遇到问题搜索一下通常能找到答案。GitHub上也有很多STM32的开源项目从简单的例程到完整的飞控、平衡车都有适合参考学习。我个人建议是教程看一遍就够了关键是要自己动手写。哪怕你照着教程抄了一遍代码也要试着自己改改参数、加加功能、制造一些错误然后去修复。真正的进步来自于调试和解决问题的过程而不是看视频的时长。最后分享一个我自己的习惯每学完一个外设就写一篇简短的笔记记录配置步骤、关键寄存器、遇到的问题和解决方法。这个习惯坚持下来你会发现自己的知识体系越来越清晰后面做项目的时候查自己的笔记比查手册快得多。STM32入门只是起点后面还有FreeRTOS、USB、以太网、电机控制等更广阔的世界等着你去探索。
企业数字化 ERP 产品动态
相关推荐
模拟IC设计入门:从CMOS反相器到PDK加载与EDA工具全流程 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:41
RK3568双千兆网口调试:MDIO总线与PHY驱动深度解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:39
华为EC6109U免拆机卡刷当贝桌面,海思HI3798MV200教程 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:38
【电路设计】常开和常闭开关/接触器 如何选? 在电路设计中经常碰见常开和常闭的开关或者接触器,本文将会简要按照我的理解说明一下常开,常闭的选择依据。常开常闭其实在正常的工况下没有什么过大的区别,但是在某些故障场景,常开和常闭就是非常重要的选择。常开:在… · 2026/9/25 5:35:56
工具调用已足够,现在基于 pkg/testing/README.md 及其源码完成文章编写。 编程语言编译器语言运行时标准库开发工具 【免费下载链接】sdk The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. 项目地址: https://gitcode.com/gh_mirrors/sdk1/sdk 点击查看 免费下载 <output文章>
Dart S… · 2026/9/25 5:35:50
【Dify】智能简历筛选与语义分析应用 自动化与智能化简历筛选已成为招聘流程提升效率的重要方向。简历文件数量庞大、信息结构多样,传统人工处理耗时费力,容易出现筛选误差。
本文介绍一种基于多模型与自动化节点的智能简历筛选工作流,覆盖批量导入、文本抽取、结构化分析到语义筛查与结果导出,助力高效实现精… · 2026/9/25 5:35:44
rsuite Avatar 头像组件 bordered 边框属性实战指南:从示例到源码实现 前端UI组件 【免费下载链接】rsuite 🧱 A suite of React components . 项目地址: https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 导读
bordered 是 rsuite Avatar(头像)组件自 5.59.0 版本起提供的属性&#x… · 2026/9/25 5:35:44
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37