新闻详情

新闻详情

首页 / 资讯中心 / 详情

基于STM32与红外传感器的自动泊车小车:从硬件设计到算法实现

发布时间:2026/9/3 3:40:35来源:尧图网络
基于STM32与红外传感器的自动泊车小车:从硬件设计到算法实现
简介本资源是一份面向高校嵌入式课程设计与电子类实践教学的完整项目方案聚焦基于STM32微控制器与红外传感器实现自动泊车功能适用于具备C语言基础和初步硬件认知的本科生开展综合实训。压缩包共18个文件124KB含7个核心C源码实现传感器采集、PID调速、停车逻辑等、6个头文件定义外设驱动与系统接口、1份硬件连接说明.txt、1份原理图PDF、1个STM32CubeMX配置文件.ioc、1张系统建模示意图.png及1份结构化README.md目录组织清晰便于分模块理解软硬件协同逻辑。已有520人学习下载可直接用于课程答辩、实验复现或毕业设计参考。读者将获得从红外测距数据处理、STM32电机PWM控制、避障路径判断到完整工程框架搭建的全流程实践材料特别包含端口映射说明与硬件电路原理图显著降低调试门槛。1. 项目概述从零到一用STM32和红外传感器打造你的自动泊车小车最近在带学生做课程设计发现“基于STM32的自动泊车系统”是个经久不衰的热门选题。它完美融合了嵌入式控制、传感器融合和简单的算法逻辑是检验单片机应用能力的绝佳试金石。这个项目听起来高大上但核心思路并不复杂就是让一辆小车自己找到车位然后规规矩矩地停进去。实现方式上超声波方案更常见但这次我们剑走偏锋选用成本更低、响应更快的红外传感器来作为小车的“眼睛”。整个系统的“大脑”则是一块STM32F103C8T6核心板也就是大家常说的“蓝桥杯”或“最小系统板”性价比极高。通过这个项目你不仅能深入理解STM32的GPIO、定时器、PWM和中断还能掌握基本的传感器数据处理和运动控制策略。无论你是电子信息、自动化专业的学生还是刚入门的嵌入式爱好者跟着这篇实操笔记走一遍你都能收获一辆能自己找车位停车的智能小车以及一套扎实的嵌入式开发经验。2. 系统整体设计与核心思路拆解2.1 为什么选择红外传感器而非超声波在自动泊车系统中测距是关键。常见的方案是超声波传感器如HC-SR04它通过计算声波往返时间测距精度较高但存在反应速度相对慢、存在最小盲区、易受温湿度影响以及成本稍高等特点。而我们选择红外测距传感器如GP2Y0A21YK0F或夏普的GP2Y0A02YK0F主要基于以下几点考量首先响应速度极快。红外传感器基于三角测量原理输出的是模拟电压值STM32的ADC可以几乎实时地采集没有超声波传感器那种触发-等待回波的时间延迟这对于需要快速反应的小车避障和边沿检测场景非常有利。其次成本与集成度。一套常用的红外测距模块价格通常低于超声波模块且接口简单仅需电源、地、模拟输出三根线电路连接更简洁。再者项目教学目的。红外传感器的模拟输出特性迫使我们必须熟练掌握STM32的ADC模数转换器功能包括多通道扫描、DMA传输等进阶应用这对于学习者来说是一个更全面的技能锻炼。当然红外传感器也有其短板比如测量精度受物体颜色和材质影响较大强光环境下可能失效。因此在我们的设计中需要加入软件滤波和误差补偿算法来提升可靠性。2.2 自动泊车系统的核心工作流程我们的自动泊车系统模拟的是最常见的“垂直泊车”场景。假设小车沿着一条直线行驶寻找右侧的空车位。整个流程可以分解为以下几个状态循迹巡航状态小车依靠底部的红外对管或灰度传感器沿着预设的轨道比如用黑色电工胶带贴出的车道直线行驶。此时侧向的红外测距传感器持续扫描右侧区域。车位探测状态当侧向传感器连续检测到一段“低-高-低”的距离变化时即表示发现了一个空位先遇到车尾距离变近然后是空位距离变远再遇到车头距离又变近。系统需要记录下空位的起始点和宽度。泊车决策与执行状态判断空位宽度是否大于小车的最小泊车需求。如果满足条件小车在驶过空位一段距离后为倒车入库预留空间开始执行预设的泊车轨迹。通常是一个“两步倒车法”先向右后方倒车待车身与车位成一定角度后再向左打方向调整直至车身摆正且位于车位中央。泊车完成状态小车停稳关闭电机可能通过声光提示泊车完成。系统的控制核心是STM32它需要实时读取所有传感器的数据根据状态机做出决策并通过PWM信号精确控制两个直流电机的转速和转向实现差速转向。2.3 硬件系统架构框图一个典型的系统硬件组成如下[电源模块 (7.4V锂电池)] | V [降压模块 (5V/3.3V)] --- 为单片机、传感器、电机驱动供电 | V [STM32F103C8T6 核心板] --- 主控大脑 | | | | | | | | V V V V [红外循迹模块] [红外测距模块x3] [电机驱动模块] [OLED显示模块] (用于巡线) (左、右、侧向) (如L298N/TB6612) (显示状态、距离) | | | | V V [直流减速电机x2] [车体底盘]关键选型解析主控STM32F103C8T6ARM Cortex-M3内核72MHz主频64KB Flash20KB RAM资源足够且生态丰富。电机驱动推荐使用TB6612FNG替代经典的L298N。TB6612效率更高发热小支持更大电流且逻辑控制简单。红外测距GP2Y0A21YK0F (10-80cm) 用于侧向探测车位GP2Y0A02YK0F (20-150cm) 或 TOF激光传感器可用于前方障碍检测但本项目侧向用21YK0F已足够。循迹模块常见的TCRT5000红外反射传感器数字输出简单可靠。3. 核心硬件电路与传感器驱动详解3.1 STM32最小系统与电源设计STM32F103C8T6最小系统板需要保证其可靠运行。除了核心的晶振8MHz、复位电路和Boot配置电路外电源部分的去耦电容是重中之重。每个芯片的VDD引脚3.3V附近都必须放置一个0.1uF的陶瓷电容和一个10uF的钽电容用于滤除高频和低频噪声。电机在启停时会产生很大的电流波动和电压毛刺良好的电源滤波能极大提高系统稳定性避免单片机无故复位。注意电机驱动模块如TB6612的电源必须与单片机的电源共地但建议使用独立的稳压源或电池供电或者至少在电机电源入口处并联一个大容量如470uF的电解电容以吸收电机产生的反向电动势。3.2 红外测距传感器的接口与校准我们以GP2Y0A21YK0F为例。它有三根线VCC(5V)、GND、Vo(模拟输出)。Vo引脚需要连接到STM32的ADC输入通道上例如PA0ADC1_IN0。驱动关键点1ADC配置在STM32CubeMX中配置ADC时建议采用“多通道扫描”“DMA”的模式。这样可以将多个红外传感器的模拟值比如左、右、侧三个自动、不间断地搬运到内存数组中不占用CPU资源。配置步骤在Analog标签下使能ADC1并为需要使用的通道如IN0, IN1, IN2使能扫描模式和连续转换模式。在DMA Settings标签下为ADC1添加一个DMA通道模式设为循环模式Circular数据宽度都为半字Half Word。在代码中启动ADC的DMA传输HAL_ADC_Start_DMA(hadc1, (uint32_t*)adc_value_buf, 3);其中adc_value_buf是一个长度为3的uint16_t数组。驱动关键点2电压-距离转换与校准GP2Y0A21的输出电压与距离成反比且是非线性的。厂家会提供特性曲线图但我们最好自己进行校准以提高精度。校准方法将传感器固定用尺子测量传感器到白色平整墙壁的实际距离D_real单位cm。读取此时ADC的值ADC_val。STM32的ADC是12位参考电压3.3V所以电压V_out (ADC_val / 4095.0) * 3.3。在多个距离点如10cm, 20cm, 30cm, ... , 80cm重复上述步骤得到一组(D_real, V_out)数据。在Excel或编程软件中拟合D_real k / (V_out - b)或D_real a * pow(V_out, b) c这样的曲线方程。通常反比函数拟合效果不错。将拟合得到的系数k和b写入程序。// 示例代码根据ADC值计算距离假设已拟合出 k13.0, b0.42 float IR_GetDistance_cm(uint16_t adc_value) { float voltage (adc_value / 4095.0f) * 3.3f; if(voltage 0.42f) return 80.0f; // 超出量程返回最大值 float distance_cm 13.0f / (voltage - 0.42f); if(distance_cm 80.0f) distance_cm 80.0f; if(distance_cm 10.0f) distance_cm 10.0f; return distance_cm; }3.3 电机驱动与PWM控制我们使用TB6612FNG驱动两个直流减速电机。STM32需要输出四路PWM信号来控制电机的速度和方向。以控制电机A为例AIN1和AIN2控制方向。10正转01反转00或11刹车。PWMA连接STM32的PWM输出引脚控制速度。配置步骤在CubeMX中选择一个定时器如TIM3配置为PWM Generation模式。选择两个通道如CH1, CH2对应电机的PWMA和PWMB。设置定时器预分频器PSC和自动重载值ARR以得到合适的PWM频率。对于直流电机1kHz到10kHz都是常见范围。假设系统时钟72MHzPSC71ARR999则PWM频率 72MHz / (711) / (9991) 1kHz。另外用两个普通的GPIO输出引脚如PB0, PB1控制AIN1和AIN2。在代码中通过__HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, speed)来改变占空比从而调速。实操心得电机的实际转速与PWM占空比并非严格的线性关系尤其是在低速时由于静摩擦力存在可能出现“死区”。通常需要设置一个最小启动占空比例如对应PWM值200/1000。更好的做法是建立“PWM值-实际转速”的查找表通过编码器反馈进行闭环PID控制但这属于进阶内容课程设计中开环控制已能满足基本移动需求。4. 软件架构与核心算法实现4.1 多任务调度与状态机设计对于这样一个实时性要求较高的系统不建议在main函数里写一个庞大的while(1)超级循环。更清晰的做法是使用一个简单的时间片轮询调度器或者直接使用FreeRTOS。考虑到课程设计的复杂度和STM32F103的资源一个轻量级的裸机状态机是更合适的选择。我们定义一个全局的系统状态变量System_State它可以在以下几个状态间切换typedef enum { STATE_TRACKING, // 循迹巡航 STATE_DETECTING, // 车位探测 STATE_PARKING, // 泊车执行 STATE_PARKED, // 泊车完成 STATE_ERROR // 异常处理 } SysState_t; SysState_t g_sys_state STATE_TRACKING;在主循环中根据当前状态执行相应的函数并处理状态迁移。while (1) { switch(g_sys_state) { case STATE_TRACKING: Tracking_Task(); // 执行巡线并调用车位探测子函数 break; case STATE_DETECTING: Detecting_Task(); // 精确测量车位尺寸 break; case STATE_PARKING: Parking_Task(); // 执行泊车轨迹 break; // ... 其他状态 } HAL_Delay(10); // 给系统一个基本的时间片 }4.2 车位探测算法详解这是项目的核心算法之一。我们使用一个侧向的红外传感器假设接在ADC通道0来探测。基本逻辑在循迹过程中持续读取侧向距离side_dist。定义一个距离阈值DETECT_THRESHOLD(例如15cm)。当side_dist DETECT_THRESHOLD时认为遇到了障碍物其他车的车身当side_dist DETECT_THRESHOLD时认为是空位。我们需要识别出一个“低障碍-高空位-低障碍”的脉冲。算法实现简化版#define DETECT_THRESHOLD 15.0f // 单位cm #define MIN_PARK_WIDTH 50.0f // 最小车位宽度需大于小车长度 typedef struct { uint8_t is_detecting; float start_distance; // 开始探测时的行驶距离估算 float current_width; } ParkDetector_t; ParkDetector_t park_detector {0}; void Parking_Detection_Task(float side_dist, float travel_speed) { static uint8_t last_state 0; // 0:空位 1:障碍 uint8_t current_state (side_dist DETECT_THRESHOLD) ? 1 : 0; // 状态从“空位”变为“障碍”可能遇到了车尾开始记录 if(last_state 0 current_state 1) { park_detector.is_detecting 1; park_detector.start_distance estimated_travel_distance; // 需要有一个估算行驶距离的变量 park_detector.current_width 0.0f; } // 状态为“障碍”时持续探测到“空位”进入空位区域开始累加宽度 else if(park_detector.is_detecting last_state 1 current_state 0) { // 空位宽度累加宽度 速度 * 时间 // 更准确的做法是用编码器计算实际移动距离 park_detector.current_width travel_speed * SAMPLE_PERIOD; } // 状态从“空位”变回“障碍”遇到车头探测结束 else if(park_detector.is_detecting last_state 0 current_state 1) { park_detector.is_detecting 0; if(park_detector.current_width MIN_PARK_WIDTH) { // 发现合格车位触发状态迁移 g_sys_state STATE_DETECTING; // 可以记录下空位的中心位置等信息 } } // 其他情况保持或重置 last_state current_state; }这个算法非常基础实际应用中需要加入软件去抖动防止因传感器噪声导致的误判和移动平均滤波让距离值更平滑。4.3 泊车轨迹规划与控制发现合格车位后小车需要执行泊车动作。我们采用经典的“两步倒车入库”法。假设小车宽度为W长度为L目标车位宽度为P。起始位置小车驶过空位使车尾大约与空位后部车辆的车头平齐车身与路沿平行距离路沿约1.5W。第一步倒车方向盘向右打满对于差速小车即右轮反转左轮正转形成原地旋转的趋势以固定半径R向后倒车。通过陀螺仪或编码器积分当车身与初始方向成约45度角时或根据几何关系当后轮中心到达某个特定点进入下一步。第二步调整方向盘向左打满左轮反转右轮正转继续倒车直到车身与路沿平行。微调入库直线倒车通过左右红外传感器调整与两侧障碍物的距离使小车停在车位中央。在代码中的实现 我们需要一个更底层的控制函数来控制小车的运动模型。对于两轮差速小车其运动学模型是线速度v (v_left v_right) / 2角速度ω (v_right - v_left) / (2 * d)其中d是轮距的一半。我们可以封装一个函数给定目标线速度和角速度计算出左右轮的目标PWM值。void SetChassisSpeed(float target_v, float target_w) { float v_left target_v - target_w * WHEEL_BASE / 2.0f; float v_right target_v target_w * WHEEL_BASE / 2.0f; // 将速度转换为PWM值这里需要你根据小车特性标定一个比例系数K int pwm_left (int)(v_left * SPEED_TO_PWM_FACTOR); int pwm_right (int)(v_right * SPEED_TO_PWM_FACTOR); // 限制PWM值在有效范围内 pwm_left LIMIT(pwm_left, -MAX_PWM, MAX_PWM); pwm_right LIMIT(pwm_right, -MAX_PWM, MAX_PWM); // 调用底层电机驱动函数 Motor_SetPWM(MOTOR_LEFT, pwm_left); Motor_SetPWM(MOTOR_RIGHT, pwm_right); }在泊车状态STATE_PARKING中我们就可以按照预设的轨迹分时段调用SetChassisSpeed(v, w)。例如第一步倒车时设置v为负倒车w为正向右转持续一段时间或达到特定角度后切换到v为负w为负向左转。5. 系统调试与性能优化实战5.1 传感器数据滤波与融合原始的红外传感器数据噪声很大直接使用会导致系统抖动甚至误动作。移动平均滤波Moving Average Filter是最简单有效的方法。#define FILTER_WINDOW_SIZE 5 float IR_Filter_MA(float new_sample) { static float buffer[FILTER_WINDOW_SIZE] {0}; static uint8_t index 0; static float sum 0; sum - buffer[index]; // 减去最旧的值 buffer[index] new_sample; // 存入新值 sum new_sample; index (index 1) % FILTER_WINDOW_SIZE; return sum / FILTER_WINDOW_SIZE; }对于更复杂的场景可以结合侧向和前方的多个传感器进行数据融合。例如当侧向传感器判断可能进入车位时用前向传感器确认前方是否有障碍避免碰撞。5.2 电机控制与速度标定开环控制下电机的实际速度受电池电压、负载、地面摩擦影响很大。为了获得更精确的移动可以进行简单的标定让小车在平整地面上直线行驶固定时间如2秒。测量实际移动距离S。计算平均速度v_real S / t。记录下此时设置的PWM值pwm_set。改变PWM值重复多次得到一组(pwm_set, v_real)数据点。可以拟合出一条近似的直线或曲线用于将目标速度更准确地转换为PWM值。如果小车装有编码器则可以实现闭环PID控制速度控制精度会大幅提升。PID算法虽然复杂但对于STM32来说完全可行网上有大量开源代码可以参考。5.3 系统集成调试步骤调试这样一个多模块系统切忌一开始就全部组装好上电。应该遵循“分模块调试逐步集成”的原则基础驱动调试先确保STM32能正常下载程序点亮LED串口能打印信息。传感器单独调试将红外测距模块接上用ADC读取数值通过串口打印出电压和计算出的距离用手在传感器前移动观察数据变化是否合理。用同样的方法测试循迹模块。电机驱动调试将电机驱动模块与STM32连接但不接电机。用万用表测量输出端电压通过程序控制正反转看电压极性是否正确。然后接上电机测试单个电机能否正反转、调速。底盘运动调试将两个电机装上车底盘编写简单的测试程序让小车前进、后退、左转、右转、原地旋转检查运动是否正常左右轮速度是否基本一致不一致可通过软件PWM补偿。巡线算法调试在地面贴好黑线让小车只运行巡线程序调整传感器阈值和PID参数如果用了PID使小车能平稳沿黑线行走。车位探测调试用纸箱模拟两侧的车辆让小车巡线经过通过串口或OLED实时输出侧向距离和探测状态观察算法是否能正确识别出“空位”。泊车动作调试先将泊车轨迹的每一步分解手动控制小车走到起始位置然后单步执行倒车动作观察轨迹是否与预期相符。反复调整第一步和第二步的转向角度或行驶距离。全系统联调将所有功能整合进行完整的自动泊车测试。此时可能会发现新的问题如状态切换不流畅、传感器误触发等需要回头优化相关模块的代码或参数。6. 常见问题排查与进阶优化方向6.1 典型问题速查表问题现象可能原因排查思路与解决方案红外测距数据跳动剧烈1. 电源噪声2. 环境光干扰3. ADC参考电压不稳1. 检查传感器电源处是否并联了10uF和0.1uF电容。2. 避免在阳光直射或强光下使用或给传感器加遮光罩。3. 确保STM32的VDDA和VSSA引脚连接稳定并启用ADC的参考电压缓冲如果芯片支持。小车巡线时左右摇摆1. 循迹传感器阈值设置不当2. 电机响应速度不一致3. 控制算法过于灵敏1. 动态校准阈值记录传感器在黑白线上的读数取中间值。2. 对左右轮PWM进行微调补偿。3. 在控制算法中加入死区或使用PD控制代替简单的P控制。无法识别车位1. 探测阈值DETECT_THRESHOLD设置不合理2. 传感器安装高度/角度不对3. 算法去抖时间太短或太长1. 用实测数据调整阈值确保能稳定区分车身和空位。2. 确保侧向传感器水平指向侧面探测面与地面平行高度与模拟车辆障碍物匹配。3. 增加状态保持计数器例如连续N个采样周期都为“空位”才判定状态改变。泊车轨迹偏离严重1. 起始位置不准确2. 左右轮实际转速与设定值差异大3. 地面打滑1. 在巡线阶段增加更精确的停车定位例如使用编码器精确控制驶过空位的距离。2. 进行电机速度标定或引入编码器进行速度闭环控制。3. 使用摩擦力更大的轮胎或在算法中引入陀螺仪进行航向角闭环控制。系统偶尔死机或复位1. 电机干扰导致电源跌落2. 堆栈溢出3. 中断冲突1. 加强电源滤波电机电源与单片机电源隔离。2. 检查局部大数组是否定义在函数内导致栈溢出可移至全局区或增大栈大小。3. 检查中断优先级配置避免在中断服务程序中执行耗时操作。6.2 从课程设计到竞赛项目的进阶优化如果你不满足于基本功能想让你的自动泊车系统更智能、更稳定甚至参加竞赛可以考虑以下优化方向传感器升级与融合增加编码器在电机轴上安装光电或霍尔编码器实现精确的里程计计算和速度闭环控制让移动和转角控制更精准。增加陀螺仪使用MPU6050等IMU传感器获取小车的实时姿态角Yaw用于泊车过程中的航向角闭环控制彻底解决因打滑导致的轨迹偏离问题。多传感器融合结合红外、超声波甚至低成本的激光雷达如RPLIDAR A1进行环境感知提高车位识别和障碍物检测的鲁棒性。控制算法升级PID控制对小车速度、巡线偏差、航向角等变量实施PID控制系统响应更平滑、更快速。路径规划算法研究更优的泊车路径如基于圆弧和直线的组合或者使用更高级的规划算法使泊车过程更高效、更接近人类驾驶员。状态估计使用卡尔曼滤波器融合编码器和陀螺仪数据得到更准确的小车位置和速度估计。架构与性能优化引入RTOS使用FreeRTOS管理巡线、探测、控制、显示等不同任务提高代码的模块化程度和实时响应能力。无线调试与监控通过蓝牙模块如HC-05或Wi-Fi模块如ESP8266将小车的传感器数据、状态信息实时发送到电脑或手机端方便远程调试和数据分析。人机交互优化增加按键选择模式、语音提示、更丰富的OLED图形界面等。这个基于STM32和红外传感器的自动泊车系统项目就像一把钥匙为你打开了嵌入式系统、机器人控制以及传感器应用的大门。从最基础的GPIO点灯到复杂的多传感器数据融合与决策控制每一步的调试成功都会带来巨大的成就感。我个人的体会是硬件项目的调试过程就是与不确定性斗争的过程耐心和系统性的方法比单纯的编程技巧更重要。当你看到小车第一次颤颤巍巍却成功地自己停进“车位”时你会觉得所有熬的夜、掉的头发都是值得的。最后一个小建议务必用好版本控制如Git为每个能正常工作的阶段打上标签这样当你的修改把系统搞崩溃时总能快速回退到一个稳定点。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

LPC1768+FreeRTOS+LwIP实战:嵌入式网络开发与移植全解析 2026/9/3 4:31:43

LPC1768+FreeRTOS+LwIP实战:嵌入式网络开发与移植全解析

简介:面向嵌入式开发者的LPC1768裸机移植FreeRTOS与LWIP完整工程源码包,适用于需要在ARM Cortex-M3平台上快速构建实时网络通信系统的物联网、工业控制项目。压缩包共478个文件,4.69MB,包含123个.h头文件、119个.c源文件&#xff…

阅读更多 →
FreeRTOS+Lwip移植实战:基于LPC1768的嵌入式网络工程解析 2026/9/3 4:31:43

FreeRTOS+Lwip移植实战:基于LPC1768的嵌入式网络工程解析

简介:面向嵌入式开发者的LPC1768平台实战资源,围绕在NXP LPC1768(ARM Cortex-M3)裸机环境中移植FreeRTOS V8.0.1并集成LWIP协议栈展开,重点解决实时任务调度与TCP/IP网络通信的工程落地问题。资源包共478个文件&#x…

阅读更多 →
强基计划数列专题:从核心概念到高阶解题策略全解析 2026/9/3 4:31:43

强基计划数列专题:从核心概念到高阶解题策略全解析

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

阅读更多 →
DotNetBar2源码深度解析:WinForm自绘控件与双缓冲渲染内幕 2026/9/3 4:31:43

DotNetBar2源码深度解析:WinForm自绘控件与双缓冲渲染内幕

简介:DotNetBar2控件库的完整源码包,以规整的目录结构呈现给.NET Windows Forms开发者,尤其适合希望深入商业级界面组件实现原理的进阶学习者。包内完整展示了Office风格用户界面的构建方式,从RibbonBar功能区、Outlook导航栏到侧…

阅读更多 →
学而思xpad2pro 4.2.0版Fastboot模式进入与Bootloader解锁全流程详解 2026/9/3 4:31:43

学而思xpad2pro 4.2.0版Fastboot模式进入与Bootloader解锁全流程详解

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

阅读更多 →
SecureCRT实战指南:会话管理、安全配置与自动化技巧,运维老手经验分享 2026/9/3 4:28:43

SecureCRT实战指南:会话管理、安全配置与自动化技巧,运维老手经验分享

简介:SecureCRT是一款在Windows下远程登录UNIX/Linux服务器的终端仿真程序,支持SSH1与SSH2协议,是系统管理员、网络工程师进行服务器和网络设备运维的常用工具。该中文版压缩包共包含206个文件,大小约36MB,主程序exe配…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞