STM32时钟配置全攻略:HSI/HSE/PLL到底怎么选?

STM32MP157实验(二)——系统时钟HSI和HSE 文章目录基础知识系统时钟HSISTM32MP157拥有五个时钟源时钟配置图STM32CubeIDE配置时钟系统时钟HSE对比HSI进行HSE配置进行MX配置进行检测总结 基础知识 时钟是处理器运行的基础,就像人的心脏一样,时钟信号推动芯片内部各部分执行相应的指令。时钟产生一次,处理器就执行一次指令。除了CPU,芯片上所有的外设都需要时钟(GPIO,I^2C、SPI等)。所以时钟是非常重要的。 系统时钟HSI STM32MP157拥有五个时钟源 HSI :内部的高速RC振荡器,频率64MHz HSE:外部 阅读详情

STM32时钟系统深度解析:从理论到实战的配置艺术

时钟,对于任何微控制器而言,都是其跳动的心脏。在STM32的世界里,这颗“心脏”的律动尤为精密和复杂。很多开发者,尤其是从51或AVR单片机转过来的朋友,初次接触STM32的时钟树时,往往会感到一阵眩晕——HSI、HSE、PLL、LSI、LSE,各种分频器、倍频器、多路选择器交织在一起,仿佛一张复杂的电路迷宫图。然而,一旦你掌握了其中的脉络,便会发现这不仅是一套精密的计时系统,更是一把开启性能优化与功耗控制大门的钥匙。本文将带你跳出枯燥的寄存器手册,从一个实际项目开发者的视角,重新审视STM32的时钟系统,探讨在不同应用场景下,如何像一位经验丰富的指挥家,调配各个时钟源,让整个系统和谐、高效地运行。

1. 理解时钟树:STM32的“血脉”网络

在深入配置之前,我们必须先理解STM32时钟系统的设计哲学。它并非一个单一的时钟源驱动所有部件,而是一个高度模块化、可配置的网络,我习惯称之为“血脉”网络。不同的外设、总线、核心对时钟频率和精度的需求各不相同,时钟树的设计正是为了满足这种差异化的需求,同时实现功耗的最优化。

1.1 核心时钟源:系统的“心脏起搏器”

STM32的时钟系统建立在几个基础时钟源之上,它们是整个系统的起点:

  • HSI(高速内部时钟):一个频率为8MHz的RC振荡器。它的最大优势是上电即用,无需外部元件。这意味着即使你的电路板上没有焊接晶振,MCU也能依靠HSI启动并运行基本功能。但其精度较差(典型误差±1%),且受温度和电压影响较大。它就像一块内置的机械表,能走时,但不够精准。
  • HSE(高速外部时钟):通常由外部4-16MHz的晶体振荡器或一个有源时钟源提供。这是高精度和高稳定性的代名词。使用高品质晶振时,精度可达±10ppm(百万分之十)甚至更高。它是需要精确时序应用(如USB、高精度定时、通信协议)的基石。你可以把它想象成一块连接了国家授时中心的原子钟。
  • LSI(低速内部时钟):频率约40kHz的RC振荡器,主要用于独立看门狗(IWDG)和自动唤醒单元(AWU)。它的存在确保了即使在主时钟失效的情况下,看门狗依然能独立工作,为系统提供最后一道安全防线。
  • LSE(低速外部时钟):通常连接一个32.768kHz的晶体,专为实时时钟(RTC) 设计。这个频率经过分频后恰好是1秒(32768 = 2^15),是实现精准日历和时钟功能的理想选择。它功耗极低,即使在待机模式下也能持续运行。

为了更直观地对比这四大时钟源的核心特性,我们可以通过下表来梳理:

时钟源类型典型频率精度主要用途功耗启动时间
HSI内部RC8 MHz较低 (±1%)系统启动、备份时钟、基本功能低极短 (几个微秒)
HSE外部晶体/时钟4-16 MHz高 (±10ppm)系统主时钟、USB、高精度定时中较长 (毫秒级,等待晶振稳定)
LSI内部RC~40 kHz很低独立看门狗(IWDG)、自动唤醒极低短
LSE外部晶体32.768 kHz高 (用于计时)实时时钟(RTC)极低较长

提示:在选择HSE的晶振时,除了频率,还需关注负载电容(CL)的匹配。PCB布局上,晶振应尽可能靠近MCU的OSC_IN和OSC_OUT引脚,走线短且对称,下方铺地隔离,这是保证时钟稳定性的硬件基础。

1.2 PLL:性能的“涡轮增压器”

如果只有HSI和HSE,STM32的性能将被限制在几十MHz。而PLL(锁相环)的存在,彻底释放了性能潜力。PLL可以将一个较低频率的输入时钟(可以是HSI/2、HSE或HSE/2)进行倍频,产生出更高的系统时钟(SYSCLK)。例如,经典的STM32F103系列,通过PLL可以将8MHz的HSI或8MHz的HSE倍频至最高的72MHz。

PLL的配置涉及几个关键参数:输入源、预分频系数M、倍频系数N以及输出分频系数P。其关系可以简化为:PLL输出时钟 = (输入时钟 / M) * N / P。配置这些参数时,必须确保每一步产生的频率都在数据手册规定的范围内。

// 以STM32F103使用HSE(8MHz晶振)倍频到72MHz系统时钟为例的配置思路:
// 1. 使能HSE,等待就绪。
// 2. 配置PLL:输入源选择HSE,不预分频(M=8),倍频系数N=9,输出分频P=2。
// 计算:(8MHz / 8) * 72 / 2 = 72MHz。 (注意:此处N=9对应倍频因子为9,输出频率为输入*9)
// 更常见的配置是:PLL输入 = HSE = 8MHz, PLL倍频因子 = 9, 则PLL输出 = 72MHz。
// 3. 使能PLL,等待锁定。
// 4. 将系统时钟源切换到PLL输出。

2. 实战配置策略:场景驱动的时钟选择

理解了各个部件后,我们面临的核心问题就是:在具体的项目中,我该如何选择?这从来不是一道有标准答案的选择题,而是一道基于项目需求的综合应用题。

2.1 场景一:成本敏感型消费电子

假设你在开发一个简单的智能玩具或遥控器,对成本控制极为严格,且对时钟精度要求不高(比如只需要基本的定时和GPIO控制)。

  • 首选方案:HSI + PLL
    • 理由:省去外部晶振及其匹配电容,节省了PCB面积和BOM成本。HSI的8MHz频率通过PLL倍频,同样可以达到较高的系统频率(如STM32F0系列可达48MHz),满足大部分控制逻辑的需求。
    • 潜在问题:由于HSI精度有限,依赖严格时序的通信协议(如UART通信波特率)可能会产生累积误差,在长时间、高速通信中可能出现误码。对于USB这类对时钟精度有硬性要求的接口则无法使用。
    • 配置要点:需在代码中定期校准HSI(如果MCU支持)。对于UART通信,可以适当增加接收端的容错窗口。

2.2 场景二:高精度工业控制与通信设备

开发工业传感器、PLC模块、或者需要USB、以太网功能的设备。

  • 必选方案:HSE作为核心
    • 理由:HSE提供的高精度和稳定性是工业级应用的基石。它为精确的ADC采样定时、PWM生成、以及USB(需要精确的48MHz时钟)、以太网PHY等提供可靠的时钟基准。
    • 典型配置:HSE -> PLL -> SYSCLK。例如,使用8MHz晶振,通过PLL倍频至系统最高频率(如168MHz for F4, 72MHz for F1)。RTC通常独立使用LSE(32.768kHz晶振)。
    • 备份方案:在要求高可靠性的系统中,通常会同时启用HSI。在代码中,可以监控HSE是否失效(通过时钟安全系统CSS),一旦检测到故障,自动切换到HSI,保证系统降级运行,而非死机。
// 在HSE失效中断服务函数中的应急处理示例
void HSE_Fault_Handler(void) {
    // 1. 立即将系统时钟源切换到HSI
    RCC->CFGR &= ~RCC_CFGR_SW; // 清除切换位
    RCC->CFGR |= RCC_CFGR_SW_HSI; // 选择HSI
    while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // 等待切换完成

    // 2. 关闭HSE和PLL
    RCC->CR &= ~RCC_CR_PLLON;
    RCC->CR &= ~RCC_CR_HSEON;

    // 3. 触发系统警报,如点亮故障灯,记录日志
    System_Fault_Indicator_ON();
    Log_Error("HSE Clock Failure! Switched to HSI.");
}

2.3 场景三:电池供电的超低功耗设备

例如智能手表、无线传感器节点、物联网终端,这些设备大部分时间处于休眠状态。

  • 核心策略:动态时钟管理与低速时钟的运用
    • 运行模式:在需要高性能处理时(如无线数据传输、传感器数据融合),使用HSE -> PLL产生高速系统时钟。
    • 休眠/低功耗模式:进入低功耗模式前,必须降低系统时钟频率,甚至切换时钟源。例如,从72MHz的PLL时钟切换至8MHz的HSI,或者直接使用MSI(多速内部时钟,在一些系列中提供更多低频率选项)。
    • RTC与唤醒:深度睡眠(Stop模式)下,核心时钟关闭,仅靠LSE维持RTC运行,并以此作为定时唤醒的源。LSI则为独立看门狗提供时钟,确保系统在极端情况下能复位恢复。
    • 关键技巧:精细配置所有外设的时钟门控。不用的外设时钟立即关闭(RCC->APBxENR和RCC->AHBxENR寄存器)。在从低功耗模式唤醒后,按需重新配置和使能外设时钟,避免不必要的功耗开销。

3. 进阶技巧与常见陷阱规避

掌握了基本配置后,一些进阶技巧和“坑”点能让你在项目开发中更加游刃有余。

3.1 总线时钟分频的优化

STM32的时钟树不仅产生SYSCLK,还通过不同的分频器产生用于AHB总线、APB1总线、APB2总线的时钟(HCLK, PCLK1, PCLK2)。优化这些分频比,对平衡性能和功耗至关重要。

  • APB1与定时器时钟:这是一个容易忽略的性能点。在STM32中,连接到APB1总线上的定时器(如TIM2-TIM7),如果APB1的分频系数不为1,那么定时器的实际时钟频率会是PCLK1的2倍。例如,当SYSCLK=72MHz,PCLK1=36MHz(APB1预分频为2)时,定时器的时钟其实是72MHz!这能让低速总线上的定时器获得更高的计时精度。
  • Flash等待周期:当系统时钟(SYSCLK)超过一定频率时,必须根据芯片数据手册,在Flash访问控制寄存器(FLASH->ACR)中设置正确的等待周期(Latency)。如果设置过小,会导致CPU读取Flash数据出错,表现为程序跑飞;设置过大,则会轻微影响性能。

注意:在动态切换系统时钟频率(如从高速切换到低速以省电)后,必须同步检查并调整Flash等待周期的设置,这是一个必须遵循的步骤。

3.2 使用CubeMX进行可视化配置与代码生成

对于复杂的时钟树配置,手动计算分频系数和检查频率限制既繁琐又易错。ST提供的STM32CubeMX工具是解决这个问题的利器。

  1. 图形化配置:在Clock Configuration标签页,你可以直观地点击选择时钟源、设置分频/倍频系数。工具会实时计算并显示各节点频率,并用颜色提示(绿色为有效,红色为超范围)。
  2. 自动生成代码:配置完成后,CubeMX能生成完整的初始化代码(SystemClock_Config()函数),包括所有必要的寄存器操作和延时等待。这大大减少了手动编写底层代码的工作量和出错概率。
  3. 验证与学习:即使你习惯于手写寄存器,也可以先用CubeMX生成一个配置,然后阅读其生成的代码,作为学习和验证自己配置正确性的参考。

3.3 调试中的时钟问题排查

当时序出现异常、外设工作不正常或功耗不符合预期时,时钟配置往往是首要怀疑对象。

  • 测量法:使用示波器或逻辑分析仪测量OSC_IN/OUT引脚,确认晶振是否起振,波形是否干净。测量MCO(主时钟输出)引脚,可以直观地将内部指定的时钟(如SYSCLK、HSI等)输出到引脚进行测量。
  • 寄存器检查法:在调试器中,查看关键时钟控制寄存器(RCC->CR, RCC->CFGR),确认时钟源是否已就绪(Ready标志)、切换是否成功(Switch Status标志)、各分频系数是否设置正确。
  • 软件诊断法:在代码中增加对RCC->CSR寄存器中时钟失效标志的检查。如果使能了时钟安全系统(CSS),一旦HSE失效,会触发中断,这是一个强大的安全特性。

4. 从单一芯片到多核与高性能系列

随着项目复杂度的提升,你可能会接触到STM32H7等高性能系列,或者涉及多核(如Cortex-M7 + Cortex-M4)的复杂系统。其时钟树也更为复杂,但核心思想一脉相承。

  • 多时钟域:在高性能系列中,可能存在多个独立的PLL(如PLL1, PLL2, PLL3),分别用于生成内核时钟、总线时钟、以及特定外设(如USB、SDMMC、LCD)所需的专用时钟。这允许更灵活的功耗和性能调配。
  • 动态调频与调压:配合芯片的电源管理单元,系统可以根据负载动态调整时钟频率和核心电压(DVS/DVFS),在性能和功耗间实现极致平衡。
  • 时钟精度提升:除了HSE,一些系列还支持更精准的时钟源,如CSI(内部低功耗时钟,精度高于HSI)、HSI48(专为USB提供的48MHz RC时钟)等,为不同场景提供了更多优化选择。

面对这些复杂系统,最好的方法依然是:先抓主干,再理枝叶。首先明确核心(们)的时钟来源,然后理清各个关键外设总线(D1, D2, D3域等)的时钟来源,最后再配置那些专用外设的时钟。数据手册中的时钟树框图是你的终极路线图,结合CubeMX工具,可以高效地完成配置。

时钟配置的终极目标,不是追求最高的频率,而是为你的应用找到最合适的节奏。这个“合适”,是精度、稳定性、功耗、成本和开发复杂度之间的完美平衡。它没有一成不变的公式,需要你根据产品的真实需求去权衡和抉择。在我经历过的多个项目中,因为时钟配置不当导致的间歇性通信失败、功耗超标、甚至系统不稳定,都是深刻的教训。因此,花时间深入理解这张“血脉网络”,并在项目初期就精心设计时钟方案,这份投入必将为整个产品的稳定性和竞争力打下坚实的基础。下次当你启动一个新的STM32项目时,不妨先问自己:我的系统,真正需要一颗怎样的“心脏”?

STM32使用HSE/HSI配置时钟 STM32时钟树 系统时钟 ①HSE 高速外部时钟信号 HSE 是高速外部时钟信号,可以由有源晶振或者无源晶振提供,频率为4~16MHz。当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空;当使用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且要配谐振电容。 HSE最常使用的是8MHz的无源晶振。当确定PLL时钟来源的时候,HSE 可以不分频或者2分频,这个由时钟配置寄存器CFGR的位17,即PLLXTRE设置。 ②PLL时钟源 PLL时钟来源可以有两个:一个是HSE, 阅读详情

相关推荐

系统时钟SYSCLK、HSE、HSI的讲解之《晶振与震荡电路的介绍》

stm32可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK): HSI 振荡器时钟, HSE 振荡器时钟,主 PLL (PLL) 时钟; HSI 时钟信号由内部16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作PLL 输入 HSE时钟信号有两个时钟源: HSE 外部晶振/陶瓷谐振器, HSE 外部用户时钟

huzhoudaxia的博客 3万+

时钟树HSE与HSI

在嵌入式系统和微控制器中,HSE(High-Speed External)和HSI(High-Speed Internal)通常是与时钟相关的术语,用于描述系统时钟源。这两者是针对STM32系列微控制器的术语,这是由STMicroelectronics生产的一系列32位ARM Cortex-M微控制器。在STM32系列微控制器中,你可以通过寄存器设置来选择使用HSE还是HSI作为系统时钟源,并配置相应的时钟分频等参数。当然,具体的配置可能会根据具体的微控制器型号和厂商的不同而有所差异。

weixin_65575911的博客 3311

STM32CubeMX配置时钟树全攻略:从HSI到PLL的完整设置流程

本文详细解析了STM32CubeMX中时钟树的配置流程,从HSI、HSE到PLL的完整设置技巧。通过对比不同时钟源特性,提供实战配置策略和性能调优建议,帮助开发者实现稳定高效的时钟架构设计,特别适合嵌入式系统开发者参考。

m5n6o7的博客 1072

拜占庭容错共识(PBFT)

文章目录一、拜占庭容错共识1. 什么是PBFT拜占庭将军的问题是什么?pBFT 原理2. 与最传统的PoW共识机制相比,PBFT优势和劣势二、参考 一、拜占庭容错共识 1. 什么是PBFT 共识机制堪称区块链的核心。我们知道,EOS、Hyperledger以及Stellar等著名的项目,都采用了BFT(拜占庭容错)共识机制,那么,BFT到底是什么? 什么是 pBFT? Practical Byzantine Fault Tolerance ,实用拜占庭容错。 什么是 BFT? Byzantine Fault

西京刀客 1万+

STM32CubeMX时钟配置全攻略:从HSE到RTC的保姆级教程

本文提供了一份详尽的STM32CubeMX时钟配置指南,涵盖从HSE、HSI、LSE、LSI四大时钟源的选择,到RCC设置、时钟树(Clock Configuration)的PLL倍频与总线分频配置,再到RTC功能的激活与初始化的完整流程。文章通过实战步骤和代码示例,帮助开发者深入理解STM32时钟系统,掌握CubeMX工程配置的核心技巧,确保系统稳定运行并优化功耗。

weixin_29185199的博客 337

CubeMX时钟配置全攻略:如何用HSE倍频到180MHz不翻车

本文详细介绍了如何使用STM32CubeMX配置HSE时钟从8MHz倍频到180MHz的完整流程,涵盖时钟架构解析、PLL参数计算、硬件设计优化及稳定性测试方法。针对STM32微控制器,提供从基础设置到高级调试的实用技巧,帮助开发者实现高性能MCU时钟系统的精密调校。

weixin_33739627的博客 414

STM32 时钟配置全攻略——从结构体 RCC_OscInitTypeDef 和 RCC_ClkInitTypeDef入手

在 STM32 开发中,时钟配置至关重要,它影响 MCU 的运行速度和外设的工作效率。如果你的 STM32 代码运行缓慢,或者某些外设无法正常工作,那么十有八九是时钟出了问题! 今天,我们进行一场STM32 时钟系统的深度解析,不仅带你了解 RCC 配置的完整流程,还详细剖析 HAL_RCC_OscConfig 和 HAL_RCC_ClockConfig 这两个关键函数的作用。 ✨ 看完这篇文章,你一定能成为 STM32 时钟配置的高手! 🚀

wwwmy1的博客 3373

STM32时钟系统详解:从HAL库配置到实战调试全攻略

时钟系统是微控制器(MCU)的核心基础,它如同芯片的“心跳”,为CPU、内存及各类外设提供精准的时序基准。其工作原理是通过时钟源(如内部RC振荡器或外部晶振)产生基准频率,再经由锁相环(PLL)进行倍频或分频,最终通过时钟树分配到不同的总线(如AHB、APB)和外设。理解并正确配置时钟,对于确保系统稳定运行、优化性能(如提升主频)和实现低功耗设计至关重要,尤其是在串口通信、定时器定时等对时序敏感的应用场景中。本文聚焦于STM32的时钟树解析,并深入探讨如何利用HAL库和CubeMX工具进行高效配置与调试,帮

weixin_30036289的博客 361

STM32时钟配置全攻略:用CubeMX快速搞定HSE/PLL配置(附180MHz实战)

本文详细介绍了如何使用STM32CubeMX工具配置STM32的时钟系统,从8MHz外部晶振到实现180MHz超频的完整流程。内容涵盖HSE/PLL配置、时钟树验证、高频稳定性优化及外设时钟兼容性方案,帮助开发者快速掌握MCU时钟配置技巧,提升系统性能。

weixin_29191081的博客 258

手把手教你用STM32CubeMX配置STM32F4时钟树(含168MHz超频实战)

本文详细介绍了如何使用STM32CubeMX工具配置STM32F4时钟树,包括基础时钟设置和168MHz超频实战。通过分步指导和计算公式,帮助开发者优化系统性能,确保稳定运行。特别强调了超频时的电压调节和Flash等待周期设置,适合嵌入式开发人员参考。

weixin_29184075的博客 379

STM32G0开发实战指南——从CubeMX配置到MDK5调试全流程解析

本文详细解析了STM32G0开发全流程,从CubeMX配置到MDK5调试,涵盖开发环境搭建、工程配置、外设初始化及ST-LINK调试技巧。通过实战经验分享,帮助开发者快速掌握STM32G0开发要点,提升开发效率。

weixin_30564901的博客 562

别再死记硬背了!用CubeMX图形化工具5分钟搞定STM32的RCC时钟树配置

本文详细介绍了如何使用STM32CubeMX图形化工具快速配置STM32的RCC时钟树,告别复杂的手动计算和寄存器操作。通过可视化界面,开发者可以直观设置时钟源、PLL倍频和分频系数,确保系统时钟和外设时钟的正确性,大幅提升开发效率。

aof26372的博客 472

STM32F103外部晶振从8MHz升级16MHz:硬件匹配、软件配置与系统验证全攻略

在嵌入式系统开发中,时钟配置是确保微控制器稳定运行的核心基础。其原理是通过外部晶振提供基准频率,再经内部锁相环(PLL)倍频,为系统及外设提供精准时序。正确的时钟配置对系统稳定性、外设通信时序及功耗控制具有关键价值,广泛应用于工业控制、通信设备和消费电子等领域。本文聚焦于STM32F103系列,针对将外部高速晶振(HSE)从8MHz更换为16MHz这一具体场景,深入剖析了硬件负载电容匹配、软件时钟树重构以及系统级验证等工程实践要点,特别是如何通过调整PLL倍频系数维持目标系统频率,并确保USART、定时器等

weixin_33889245的博客 499

STM32F107 RMII以太网时钟配置全攻略:从PLL3到MCO引脚的速度设置

本文详细解析了STM32F107 RMII以太网时钟配置的核心步骤与常见陷阱。重点阐述了从PLL3时钟源配置到MCO引脚输出50MHz参考时钟的完整链路,特别是PA8引脚GPIO速度必须设置为High的关键细节,并提供了PHY地址配置与软件初始化排错指南,帮助开发者彻底解决以太网初始化超时问题。

b0c1d2的博客 221

基于STM32的系统主频修改与电源管理模式全攻略

本文深入讲解STM32的时钟系统和电源管理模式,涵盖主频配置、Flash等待周期设置、动态调频技巧及Sleep/Stop/Standby低功耗模式的应用,结合实际案例优化系统能效,显著提升续航能力。

weixin_32925455的博客 385

STM32CubeMX安装配置全攻略:从零开始高效开发STM32

在嵌入式系统开发中,图形化配置工具正成为提升开发效率的关键技术。这类工具通过可视化界面抽象底层硬件细节,其核心原理是将芯片外设、时钟树等寄存器配置转化为直观的图形操作,自动生成初始化代码框架。这极大地降低了开发门槛,减少了手动配置可能出现的错误,其技术价值在于实现硬件资源的快速、标准化管理。在微控制器应用场景中,尤其是在基于ARM Cortex-M内核的STM32系列开发中,开发者常面临工程创建、外设初始化和时钟配置等重复性工作。STM32CubeMX作为ST官方推出的图形化配置工具,正是为解决这些痛点而生

weixin_34268753的博客 452

STM32CubeMX配置PWM输出全攻略:从时钟树到占空比调节

本文详细介绍了使用STM32CubeMX图形化工具配置PWM输出的完整流程。从理解PWM原理与核心指标出发,重点讲解了时钟树的配置作为精度源头,逐步演示了定时器参数设置、PWM通道启用、频率与占空比计算,并提供了动态调节占空比的代码示例与常见问题排查技巧,旨在帮助开发者高效实现精准的PWM信号输出。

sand8的博客 341

论文阅读笔记---Deep HDR Video from Sequences with Alternating Exposures

Kalantari N K, Ramamoorthi R. Deep HDR Video from Sequences with Alternating Exposures[C]//Computer Graphics Forum. 2019, 38(2): 193-205. 摘要: 在本文中,提出了一种基于学习的方法来,我们使用两个顺序卷积神经网络(CNN)对整个HDR视频重建过程进...

qq_25283239的博客 1446
上一篇: 复旦微FMQL45T900全国产化ARM核心模块在工控信号处理中的应用实践
下一篇: Ubuntu 20.04升级OpenSSL 3.x踩坑实录:从编译到软链接的完整指南
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值