其他分享
首页 > 其他分享> > 3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(3)marlin 2.0.9.2 截至发稿时间2021年12月16日

3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(3)marlin 2.0.9.2 截至发稿时间2021年12月16日

作者:互联网

/**
 * Marlin 3D Printer Firmware

头描述详见其他两个文件头描述
 * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
 *
 * Based on Sprinter and grbl.
 * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <Licenses- GNU Project - Free Software Foundation>.
 *
 */
#pragma once  /*#pragma once (比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次*/

/**
 * Configuration.h
 * 固件配置文件都在Configuration.h 中
 * Basic settings such as:
 * 基本设置有以下几个方面:
 * - Type of electronics
 * - 电器元件电路配置,意指世界各地某些厂商开发的板卡上的参数,例如对应芯片输出输入管脚定义,高低电平,信号功能等。
 * - Type of temperature sensor
 * - 温度传感器的类型 温度传感器是一种将温度变量转换为可传送的标准化输出信号的传感器。
 * - (常用分为热电偶与热电阻,这里常用于热床和挤出头温度监测,不达到热度主程序不启动。)
 * - Printer geometry  
 * - 打印成品最大体积尺寸,(常态设置长宽高行程)。
 * - Endstop configuration
 * - 限位开关设置 (常态设置为X,Y,Z轴最小起点,也可以根据结构不同设置成最大终点。Min X,Y,Z 和 Max X,Y,Z.)
 * - LCD controller
 * - LCD 显示屏的控制 (marlin标配单色点阵显示器有1602,和12864,还有3.5寸彩屏,4寸彩屏等内置库。
 * - 例:12864液晶屏用的比较多。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。
 * - 我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108、T6963C,ST7920等等。)
 * - Extra features
 * - 还有一些其他的额外功能 (例如:断电续打、打完关机、断料检测、热床调平、WiFi远程传文件、远程管理等。
 * -                      酷炫的还有自制时候安装一些灯,当然这些都可以通过定义管脚编程实现自动化开关亮度调节)
 *
 * Advanced settings can be found in Configuration_adv.h
 * - 更多的高级设置当然可以在高级配置文件里面找到
 */
#define CONFIGURATION_H_VERSION 02000902  /*定义当前配置文件版本是marlin 2.0.9.2版*/

//===========================================================================
//============================= Getting Started =================== /*开始走起正文*/
//===========================================================================

/**
 * Here are some useful links to help get your machine configured and calibrated:
 * 这给你几个链接,可能对于你调配机器有所帮助:调制和校准
 *
 * Example Configs:     Branches · MarlinFirmware/Configurations · GitHub
 * 配置案例大样链接
 * Průša Calculator:    RepRap Calculator - Prusa Printers
 * 在线计算器链接,很有帮助,调配计算很多参数,比如常见的电机转数角度步数对应几何长度计算,各种类型耗材(PLA,ABS)线长和重量以及造价计算的对应关系。
 *                      Filament 耗材   Stepper Motors 步进电机  Acceleration 最大加速度
 * Calibration Guides:  Calibration - RepRap
 *      调校指南          Triffid Hunter's Calibration Guide - RepRap
 *                      https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
 *                      https://youtu.be/wAL9d7FgInk
 *
 * Calibration Objects: The Essential Calibration Set by coasterman - Thingiverse
 * 调校可用到的打印物体文件 XYZ 20mm Calibration Cube by iDig3Dprinting - Thingiverse
 */

//===========================================================================
//========================== DELTA / SCARA / TPARA ==========================  DELTA三角洲架构,SCARA水平多关节架构,TPARA 
//===========================================================================
//
// Download configurations from the link above and customize for your machine.
// Examples are located in config/examples/delta, .../SCARA, and .../TPARA.
// 从上面的链接下载配置并为您的机器定制。示例位于配置/示例/增量中,.../SCARA和.../TPARA。
//===========================================================================

// @section info

// Author info of this build printed to the host during boot and M115   
   /*这个版本的作者信息可以使用M代码M115反馈打印回传到主机*/
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
   /*定义STRING_CONFIG_H_AUTHOR函数的两个值没有和默认设置,设置固件作者信息,可在窗口通信的是候看到。谁做了改变*/
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
   /*定义SCUSTOM_VERSION_FILE函数,版本文件惯例,根目录的路径(无引号)*/
/**
 * *** VENDORS PLEASE READ ***
 *       制造商供应商请阅读
 * Marlin allows you to add a custom boot image for Graphical LCDs. 
 * 马林允许您为图形液晶显示器添加自定义引导映像。
 * With this option Marlin will first show your custom screen followed
 * 有了这个选项,马林将首先显示您的自定义屏幕
 * by the standard Marlin logo with version number and web URL.
 * 由标准的马林标志与版本号和网址。
 * We encourage you to take advantage of this new feature and we also
 * respectfully request that you retain the unmodified Marlin boot screen.
 * 我们鼓励您利用这一新功能,我们还敬请您保留未修改的马林引导屏幕。
 */

// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
   /*启动时显示马林引导屏幕。**支持批量生产模式** */
#define SHOW_BOOTSCREEN  
   /*定义 点亮启动屏幕,如果注释掉这行的话开机就不会显示开机初始画面,直接进入主界面。*/
// Show the bitmap in Marlin/_Bootscreen.h on startup.
   /* 启动时显示的位图(开机画面)在 Marlin/_ Bootsscreen . h文件中 */
//#define SHOW_CUSTOM_BOOTSCREEN
  /* 也可以定义第二顺序可以显示厂商自定义开机画面logo,取消//行首注释,即可显示 */
// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
  /* 显示位图屏幕状态文件在马林文件夹下 Statusscreen.h 中 */
//#define CUSTOM_STATUS_SCREEN_IMAGE
  /*定义 屏幕待机状态,如果注释掉这行的话就不会显示待机状态,直接运行下一步程序。*/
// @section machine 机器选择

/**
 * Select the serial port on the board to use for communication with the host.
 * 选择板上用于与主机通信的串行端口,高级的板子可能不止一个
 * This allows the connection of wireless adapters (for instance) to non-default port pins.
 * 这里允许无线适配器(例如)连接到非默认端口引脚。
 * Serial port -1 is the USB emulated serial port, if available.
 * 串行端口-1是USB仿真串行端口(如果有的话)。
 * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
 * 注意:第一个串行端口(-1或0)将始终由Arduino引导加载程序使用。
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
#define SERIAL_PORT 0
  /* 启动串行接口 0 ,以实现与主机通讯 */

/**
 * Serial Port Baud Rate
 * 串行接口通信传输波特率,与主机在一个频道。
 * This is the default communication speed for all serial ports.
 * 这里对于所有串行接口采用相同的默认的通讯速率
 * Set the baud rate defaults for additional serial ports below.
 * 为下面的其他串行端口设置波特率默认值。
 * 250000 works in most cases, but you might try a lower speed if
 * you commonly experience drop-outs during host printing.
 * 250000在大多数情况下是可行的,但是如果在主机打印过程中,可能您通常会遇到掉线的情况。
 * You may try up to 1000000 to speed up SD file transfer.
 * 您也可以尝试高达1000000来加速SD文件传输。
 * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
 */
#define BAUDRATE 250000
  /* 定义 默认运行250000 比特率 可自行修改 */
//#define BAUD_RATE_GCODE     // Enable G-code M575 to set the baud rate
  /* 定义 BAUD_RATE_GCODE  比特率改变可用M575命令,在做上位机时不通过改变固件即可更改。 可自行修改设置比特率 
     ([2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]) */
/**
 * Select a secondary serial port on the board to use for communication with the host.
 * 在主板上选择另外一个即第二个串行接口作为与主机通讯
 * Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
 * 目前以太网(-2)仅在Tinesy 4.1板上受支持。
 * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
//#define SERIAL_PORT_2 -1
  /* 定义运行第二个串行接口,取消注释即可运行。 */
//#define BAUDRATE_2 250000   // Enable to override BAUDRATE
  /* 定义运行第二个串行接口通讯速率设置为250000,取消注释即可运行。启用以覆盖BAUDRATE */
/**
 * Select a third serial port on the board to use for communication with the host.
 * 在主板上选择另外一个即第三个串行接口作为与主机通讯
 * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1
 * 目前仅在AVR系列,DUE系列,LPC1768/9和STM32系列/STM32F1系列芯片主板上受支持。
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
//#define SERIAL_PORT_3 1
   /* 定义运行第三个串行接口,取消注释即可运行。 */
//#define BAUDRATE_3 250000   // Enable to override BAUDRATE
   /* 定义运行第三个串行接口通讯速率设置为250000,取消注释即可运行。启用以覆盖BAUDRATE */
// Enable the Bluetooth serial interface on AT90USB devices
   /* 支持AT90USB驱动 设备上启用蓝牙串行接口 */
//#define BLUETOOTH
  /* 定义运行蓝牙串行接口,取消注释即可运行。 */
// Choose the name from boards.h that matches your setup
  /* 选用与你匹配主板的名字,可在主板库 boards.h 文件中查询,然后调用启用安装。 */
#ifndef MOTHERBOARD 
    /* #ifndef是"if not defined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试调用等。 */
  #define MOTHERBOARD BOARD_RAMPS_14_EFB
   /* 马林固件默认运行定义运行RAMPS_14_EFB主板,取消注释即可运行选择其他主板,
      RAMPS_14_EFB主板长这个样子https://reprap.org/wiki/RAMPS_1.4。 */
#endif 
   /* #ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。
       #ifndef 标识1 //判断"标识1"是否定义,如果被定义则返回假,如果没有被定义则返回真。

      语句1 #ifndef 标识1

       语句2 #define 标识1

        语句3 #endif

          语句4 ……

            语句5 ……

     该段代码意思是:如果标识1没有被定义,则重定义标识1,即执行语句2、语句3;如果标识1已经被定义,
     则直接跳过语句2、语句3,直接执行语句4、语句5、……

     */ 
   

// Name displayed in the LCD "Ready" message and Info menu
  /* 液晶屏“就绪待机等待”信息 和信息菜单中显示的名称 */
//#define CUSTOM_MACHINE_NAME "3D Printer"
   /* 定义运行显示自定义名称“3D打印机”,名称可更改,取消注释即可运行显示。 */
// Printer's unique ID, used by some programs to differentiate between machines.
   /* 打印机的唯一标识,被一些程序用来区分机器. */
// Choose your own or use a service like Online UUID Generator Tool
   /* 这个链接是一个不错的机器串号在线生成器 */
//#define MACHINE_UUID "e138a2b7-9200-458e-ac60-d92f0f6d06a4"
  /* 定义运行显示自定义串号名称“e138a2b7-9200-458e-ac60-d92f0f6d06a4”,
     名称由上述链接在线串号生成器提供可更改,取消注释即可运行嵌入。 */
/**
 * Define the number of coordinated linear axes.
 * 定义搭配轴的数量
 * See https://github.com/DerAndere1/Marlin/wiki
 * axis 3D printers axes (AXIS*_NAME 'X', 'Y' or 'Z')
 * 三种打印机一般轴名称为X,Y,Z.
 * axes (AXIS*_NAME 'A', 'B' or 'C') or secondary linear axes (AXIS*_NAME 'U', 'V' or 'W').  
 * 更多的数控设备轴名称规范为,A,B,C,E.二者机器人坐标轴为U,V,W。
 * Each linear axis gets its own stepper control and endstop:
 * 每个线性轴都有自己的步进电机控制和限位开关:
 *   Steppers: *_STEP_PIN, *_ENABLE_PIN, *_DIR_PIN, *_ENABLE_ON
 *             步进电机控制信号函数名称为:
 *             _STEP_PIN,脉冲步数引脚,最重要的引脚,通过单片机给这个引脚PWM脉冲信号,控制电机运动轴运动角度。;
 *             _ENABLE_PIN,使能引脚。
 *             _DIR_PIN,控制电机方向引脚,正转或是逆转。
 *             _ENABLE_ON,使能引脚产生的使能信号,高电平停止工作,低电平正常工作;简单理解开关闭合,干还是停。
 *   Endstops: *_STOP_PIN, USE_*MIN_PLUG, USE_*MAX_PLUG
 *              _STOP_PIN,限位开关信号引脚 USE*MIN_PLUG,初始原点位信号 USE*MAX_PLUG,运动范围最长终点信号。
 *       Axes: *_MIN_POS, *_MAX_POS, INVERT_*_DIR
 *              _MIN_POS,轴初始位置信号  _MAX_POS,轴终点位置信号  INVERT_*_DIR,使某轴反转信号。
 *    Planner: DEFAULT_AXIS_STEPS_PER_UNIT, DEFAULT_MAX_FEEDRATE
 *             DEFAULT_AXIS_STEPS_PER_UNIT,默认轴初始位置  
               DEFAULT_MAX_FEEDRATE,  默认最大的轴转速,如挤出机挤出速度。                
 *             DEFAULT_MAX_ACCELERATION, AXIS_RELATIVE_MODES,         
 *             DEFAULT_MAX_ACCELERATION,默认各个轴的移动速度,可以调整修改  
 *             AXIS_RELATIVE_MODES, 轴相应模式
 *             MICROSTEP_MODES, MANUAL_FEEDRATE  微步进模式,  手动_进给速度。
 *
 * :[3, 4, 5, 6] (后边出现括号里的四个值一次对应于X,Y,Z,E四个轴的设置)
 */
//#define LINEAR_AXES 3
   /* 定义运行主线性轴数量 ,取消注释即可运行。*/
/**
 * Axis codes for additional axes:
 * 附加轴的轴名称
 * This defines the axis code that is used in G-code commands to
 * reference a specific axis.
 * 这定义了在g代码命令中用来引用特定轴的轴代码。
 * 'A' for rotational axis parallel to X
 * ”A"代表平行于X轴面旋转的轴
 * 'B' for rotational axis parallel to Y
 * ”B"代表平行于Y轴面旋转的轴
 * 'C' for rotational axis parallel to Z
 * ”C"代表平行于Z轴面旋转的轴
 * 'U' for secondary linear axis parallel to X
 * “U”代表平行于X的次级线性轴
 * 'V' for secondary linear axis parallel to Y
 * “V”代表平行于X的次级线性轴
 * 'W' for secondary linear axis parallel to Z
 * “W”代表平行于X的次级线性轴
 * Regardless of the settings, firmware-internal axis IDs are
 * 无论设置如何,固件内部轴标识为
 * I (AXIS4), J (AXIS5), K (AXIS6).
 */
#if LINEAR_AXES >= 4
  #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴A ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif
#if LINEAR_AXES >= 5
  #define AXIS5_NAME 'B' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴B ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif
#if LINEAR_AXES >= 6
  #define AXIS6_NAME 'C' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴C ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif

// @section extruder 选择挤出机

// This defines the number of extruders
   这里定义了挤出机的数量,最多几个,可用作不同功能9色打印。
// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1
   /* 定义默认保留主挤出机1运行 */
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
   市面常见挤出耗材直径可分为(1.75, 2.85, 3.0, ...).可用体积,长度传感器。
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
   /* 定义默认运行主挤出机采用1.75mm直径耗材 */
// For Cyclops or any "multi-extruder" that shares a single nozzle.
   对于非分体式挤出机。多合一,例如2进1出,3进1出,多进一出等共用单个喷嘴的挤出机。
//#define SINGLENOZZLE
   /* 定义默认保留单喷嘴运行 */
// Save and restore temperature and fan speed on tool-change.
   /* 临时暂停或更换工具时保存并恢复温度和风扇速度。 */
// Set standby for the unselected tool with M104/106/109 T...
   用G代码中的,M104/106/109 T...等代码留作备用工具开发。
#if ENABLED(SINGLENOZZLE)
    /* 定义 单喷嘴 开关*/
  //#define SINGLENOZZLE_STANDBY_TEMP
    /* 定义 开启提升 单喷嘴_待机_温度 具体值见函数解释,一般为G代码 */
  //#define SINGLENOZZLE_STANDBY_FAN
    /* 定义 开启提升 单喷嘴散热风扇_待机_温度 具体值见函数解释,一般为G代码 */
#endif

/**
 * Multi-Material Unit
 * 多材料单位组合
 * Set to one of these predefined models:
 *  设置为以下预定义模型之一:
 *   PRUSA_MMU1           : Průša MMU1 (The "multiplexer" version)  Průša MMU1(“多路混合”版本)
 *   PRUSA_MMU2           : Průša MMU2
 *   PRUSA_MMU2S          : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
 *                                        需要带运动传感器的MK3S挤出机,挤出机= 5台
 *   EXTENDABLE_EMU_MMU2  : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
 *   改进版 MMU2              具有可配置耗材细丝数量的MMU(ERCF、SMuFF或与Průša MMU2兼容的类似固件)
 *   EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
 *   改进版 MMU2s             具有可配置耗材细丝数量的MMU(ERCF、SMuFF或与Průša MMU2兼容的类似固件)
 * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
 * 如果内存管理单元出现故障,需要喷嘴停放功能来停放打印头。
 * See additional options in Configuration_adv.h.
 * 请参见高级结构配置库文件中的其他选项
 */
//#define MMU_MODEL PRUSA_MMU2
    /* 定义默认运行MMU_MODEL PRUSA_MMU2模式,注释掉//即可启动配置。 */

// A dual extruder that uses a single stepper motor
   /* 共用一个步进电机的双挤出机 */
   
//#define SWITCHING_EXTRUDER  
  /* 定义启动挤出机开关 ,注释掉即可启用。*/
  
#if ENABLED(SWITCHING_EXTRUDER)
   /* 定义挤出机开关使能。*/
  #define SWITCHING_EXTRUDER_SERVO_NR 0
      /* 定义 挤出机开关私服系统函数 值为 0 低电平 详见此函数库文件 */
  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
      /* 定义 挤出机开关伺服轴角度 ,角度可以适配E0,E1,或者E2,E3挤出机 */
  #if EXTRUDERS > 3  /* 当挤出机数量超过3个时候执行以下条件函数 */
    #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
       /* 定义 挤出机开关私服系统函数 值为 1 高电平 详见次函数库文件 */
  #endif
#endif

// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
   /* 一个双头喷嘴 用使用伺服电机提升/降低一个(或两个)喷嘴 这种状态的挤出机时启动这条命令 */
//#define SWITCHING_NOZZLE
   /* 定义启动喷嘴开关即可启用,不常见。 */
#if ENABLED(SWITCHING_NOZZLE) /* 同上释义 */
  #define SWITCHING_NOZZLE_SERVO_NR 0
  //#define SWITCHING_NOZZLE_E1_SERVO_NR 1          // If two servos are used, the index of the second
  #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 }   // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
#endif

/**
 * Two separate X-carriages with extruders that connect to a moving part
 * 两个独立的X-龙门托架部件的挤出机.带有连接到移动部件的挤出机
 * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.
 * 通过螺线管对接机构。需要SOL1_PIN和SOL2_PIN。预留引脚,查看请到该函数库文件定义引脚查询
 */
//#define PARKING_EXTRUDER
 /* 定义 挤出机停车 */

/**
 * Two separate X-carriages with extruders that connect to a moving part
 * 两个独立的X-龙门托架部件的挤出机.带有连接到移动部件的挤出机
 * via a magnetic docking mechanism using movements and no solenoid
 * 通过使用移动的磁性对接机构并且没有螺线管,参照以下网站查看结构。
 * project   : https://www.thingiverse.com/thing:3080893
 * movements : https://youtu.be/0xCEiG9VS3k
 *             https://youtu.be/Bqbcs0CU2FE
 */
//#define MAGNETIC_PARKING_EXTRUDER
  /* 定义 磁力停车挤出机 注释掉即可使用 */
#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER)
   /* 停车挤压机、磁性停车挤压机 二选一 */

  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
   /* 定义 停车挤出机 X轴 坐标范围 既两个挤出机间距 */
  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // (mm) Distance to move beyond the parking point to grab the extruder
   /* 定义 停车挤出机 抓取距离 为 1 (毫米)移动到停车点以外以抓取挤出机的距离 */
  #if ENABLED(PARKING_EXTRUDER)
   /* 定义 停车挤出机使能开关 */
    #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
    /* 停车挤出机螺线管回抽 如果启用,电磁阀不会被外加电压磁化 */
    #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
    /* 定义 停车挤出机螺线管管脚有效 LOW 低电平 原版应该写错了 应该为 0  低或高引脚信号激励线圈 */
    #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // (ms) Delay for magnetic field. No delay if 0 or not defined.
    /* 定义 停车挤出机螺线管延迟转数 250 磁场延迟(毫秒)。如果为0或未定义,则无延迟。 */
    //#define MANUAL_SOLENOID_CONTROL                   // Manual control of docking solenoids with M380 S / M381
    /* 定义 手动螺线管控制 用M380 S / M381手动控制对接电磁阀 M380 和 M381 为G代码命令 */
  #elif ENABLED(MAGNETIC_PARKING_EXTRUDER)
    /* 如果不是前段命令提到的挤出机 执行磁力挤出命令 */
    /* #elif 使您得以创建复合条件指令。如果前面的 #if 和前面的任何 #elif(可选)指令表达式的计算结果都不是 true,则将计算 #elif 表达式。如果 #elif 表达式计算为 true,编译器将计算位于 #elif 和下一个条件指令之间的所有代码。例如:

可以使用运算符 ==(相等)、!=(不相等)、&&(与)及 ||(或)来计算多个符号。还可以用括号将符号和运算符分组。

#elif 等效于使用:

使用 #elif 更简单,因为每个 #if 都需要一个 #endif,而 #elif 即使在没有匹配的 #endif 时也可以使用。

有关如何使用 #elif 的示例,请参见 #if。*/
   
    #define MPE_FAST_SPEED      9000      // (mm/min) Speed for travel before last distance point
    /*定义磁力挤出机最快速度 9000  (毫米/分钟)最后一个距离点之前的行驶速度 */
    #define MPE_SLOW_SPEED      4500      // (mm/min) Speed for last distance travel to park and couple
    /* 定义磁力挤出机最慢速度      4500  (毫米/分钟)最后一次停车和行程距离的速度 */
    #define MPE_TRAVEL_DISTANCE   10      // (mm) Last distance point
    /* 定义 磁力挤出机行程距离  最后距离点收工远离点,因为挤出头有温度,会把模型停留超时融化 */
    #define MPE_COMPENSATION       0      // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling
    /* 定义 磁力挤出机补偿 低电平 0 启动配置 偏移补偿-1,0,1(乘法器),仅用于耦合 */
  #endif

#endif

/**
 * Switching Toolhead
 * 切换工具头
 * Support for swappable and dockable toolheads, such as
 * 支持可交换和可停靠的工具头,例如
 * the E3D Tool Changer. Toolheads are locked with a servo.
 * E3D工具更换器。工具头被伺服系统锁定 有兴趣请见此视频链接 DIY E3D工具更换器_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
 * E3D刀具更换器::Titan Aero刀具适配器_STL模型_3D模型下载_迪威模型
 */
//#define SWITCHING_TOOLHEAD
  /* 定义 开关换刀工具系统 */
/**
 * Magnetic Switching Toolhead
 * 磁性开关换刀工具系统
 * Support swappable and dockable toolheads with a magnetic
 * 支持可交换和可停靠到带有磁性的换刀系统
 * docking mechanism using movement and no servo.
 * 使用移动和无伺服的对接机构
 */
//#define MAGNETIC_SWITCHING_TOOLHEAD
  /* 定义 磁性自动换刀系统 */
/**
 * Electromagnetic Switching Toolhead
 * 电磁性自动换刀系统
 * Parking for CoreXY / HBot kinematics.
 * CoreXY / HBot运动学的停车。
 * Toolheads are parked at one edge and held with an electromagnet.
 * 工具头停在一边,用电磁铁固定。
 * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4
 * 支持大于2个以上工具头,详见youtube
 */
//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD
 /* 定义 电磁控制自动换刀工具系统 */

#if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
 /* 如果三种结构之一,条件成立执行相应程序 */
  #define SWITCHING_TOOLHEAD_Y_POS          235         // (mm) Y position of the toolhead dock
  /* 定义 普通自动换刀系统 Y 轴 位置 235 工具头底座的Y位置 */
  #define SWITCHING_TOOLHEAD_Y_SECURITY      10         // (mm) Security distance Y axis
  /* 定义 普通自动换刀系统 Y 轴 安全距离 10 mm (毫米)安全距离Y轴 */
  #define SWITCHING_TOOLHEAD_Y_CLEAR         60         // (mm) Minimum distance from dock for unobstructed X axis
  /* 定义 普通自动换刀系统 Y 轴 悬离  60 mm   不受阻碍的X轴到装置最小距离(毫米) */
  #define SWITCHING_TOOLHEAD_X_POS          { 215, 0 }  // (mm) X positions for parking the extruders
  /* 定义 普通自动换刀系统 X 轴 位置 215 工具头底座的X位置 */
  #if ENABLED(SWITCHING_TOOLHEAD)
    /* 启动 普通自动换刀系统 */
    #define SWITCHING_TOOLHEAD_SERVO_NR       2         // Index of the servo connector
    /* 定义 普通自动换刀系统伺服电机 引脚 2 伺服连接器的索引 */
    #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 }  // (degrees) Angles for Lock, Unlock
    /* 定义 普通自动换刀系统伺服电机 轴角度 0,180 锁定、解锁角度(度) */
  #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD)
    /* 同以上释义,磁性自动换刀系统 */
    #define SWITCHING_TOOLHEAD_Y_RELEASE      5         // (mm) Security distance Y axis
    #define SWITCHING_TOOLHEAD_X_SECURITY   { 90, 150 } // (mm) Security distance X axis (T0,T1)
    //#define PRIME_BEFORE_REMOVE                       // Prime the nozzle before release from the dock
    #if ENABLED(PRIME_BEFORE_REMOVE)
      #define SWITCHING_TOOLHEAD_PRIME_MM           20  // (mm)   Extruder prime length
      #define SWITCHING_TOOLHEAD_RETRACT_MM         10  // (mm)   Retract after priming length
      #define SWITCHING_TOOLHEAD_PRIME_FEEDRATE    300  // (mm/min) Extruder prime feedrate
      #define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400  // (mm/min) Extruder retract feedrate
    #endif
  #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
    /* 同以上释义 电磁性自动换刀系统 */
    #define SWITCHING_TOOLHEAD_Z_HOP          2         // (mm) Z raise for switching
  #endif
#endif

/**
 * "Mixing Extruder"
 * 混合挤出机
 *   - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
 *    添加g代码M163和M164来设置和“提交”当前混合因子。
 *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
 *   扩展步进程序,按照混合比例移动多个步进器。
 *   - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
 *   可选支持重复固件的“M164 S”支持虚拟工具。
 *   - This implementation supports up to two mixing extruders.
 *   该实施方案最多支持两台混合挤出机。
 *   - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
 *   为M165启用G1直接混和和G1混和(来自皮娅·陶伯特的参考实现)。
 */
//#define MIXING_EXTRUDER
  /* 定义 混合挤出机 */
#if ENABLED(MIXING_EXTRUDER)
  /* 开启 混合挤出机 */
  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
  /* 定义 混合挤出机步进电机 2 混合挤出机中的步进机数量 */
  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
  /* 定义 混合虚拟工具 16 使用M163和M164的虚拟工具方法 */
  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
  /* 定义 G1的直接混合 在G1运动命令中允许ABCDHI混合因子 */
  //#define GRADIENT_MIX           // Support for gradient mixing with M166 and LCD
  /* 定义 渐变混合 M166和液晶显示器支持渐变混合 */
  //#define MIXING_PRESETS         // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS
   /* 定义 混合预设 为2或3个混合步进器指定8个默认的垂直工具预设 */
  #if ENABLED(GRADIENT_MIX)
   /* 启动 渐变混合 */
    //#define GRADIENT_VTOOL       // Add M166 T to use a V-tool index as a Gradient alias
     /* 定义 渐变虚拟工具 添加M166 T以使用V形工具索引作为渐变别名 */
  #endif
#endif

// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
/*挤出机的偏移 如果使用多个并在更换时依靠固件定位,请取消注释 */
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
 /* 对于挤出机0(默认挤出机),偏移量必须为X=0,Y=0 */
// For the other hotends it is their distance from the extruder 0 hotend.
  /* 对其他挤出机来说,这是他们离挤压机的距离。 */
//#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
  /* 定义 挤出机偏移X 轴 (毫米)每个喷嘴的相对X偏移 */
//#define HOTEND_OFFSET_Y { 0.0, 5.00 }  // (mm) relative Y-offset for each nozzle
   /* 定义 挤出机偏移Y轴 (毫米)每个喷嘴的相对X偏移 */
//#define HOTEND_OFFSET_Z { 0.0, 0.00 }  // (mm) relative Z-offset for each nozzle
    /* 定义 挤出机偏移Z轴 (毫米)每个喷嘴的相对X偏移 */
// @section machine

/**
 * Power Supply Control
 * 电源供给控制
 * Enable and connect the power supply to the PS_ON_PIN.
 * 启用电源并将电源连接到电源开引脚。
 * Specify whether the power supply is active HIGH or active LOW.
 * 指定电源是高电平有效还是低电平有效。
 */
//#define PSU_CONTROL
  /* 定义 电源供给控制 */
//#define PSU_NAME "Power Supply"
 /* 定义  电源供给控制 名称 电源供给 */

#if ENABLED(PSU_CONTROL)
    /* 启动 电源供给控制 */
  //#define MKS_PWC                 // Using the MKS PWC add-on
    /* 定义 MKS 电源供给控制 用MKS电源供给控制模块 */
  //#define PS_OFF_CONFIRM          // Confirm dialog when power off
    /* 定义 电源关闭确认 关机时确认对话框 */
  //#define PS_OFF_SOUND            // Beep 1s when power off
   /* 定义  电源关闭声音   Bi 1秒 当切断电源时 */
  #define PSU_ACTIVE_STATE LOW      // Set 'LOW' for ATX, 'HIGH' for X-Box
  /* 定义 开关电源控制 活动状态 低电平 为ATX设置“低”,为X-Box设置“高”  */
  //#define PSU_DEFAULT_OFF         // Keep power off until enabled directly with M80
    /* 定义 开关电源控制 默认关闭状态 保持电源关闭,直到直接启用M80代码 */
  //#define PSU_POWERUP_DELAY 250   // (ms) Delay for the PSU to warm up to full power
    /* 定义 开关电源控制 默认延迟 250 ms  (毫秒)延迟PSU预热至满功率 */
  //#define PSU_POWERUP_GCODE  "M355 S1"  // G-code to run after power-on (e.g., case light on)
    /* 定义 开关电源控制 G代码 为 M355 S1 开机后运行的g代码(例如,机箱灯亮) */
  //#define PSU_POWEROFF_GCODE "M355 S0"  // G-code to run before power-off (e.g., case light off)
     /* 定义 开关电源控制 G代码 为 M355 S0 断电前运行的g代码(例如,外壳灯关闭) */
  //#define AUTO_POWER_CONTROL      // Enable automatic control of the PS_ON pin
   /* 定义 自动关控制模块  启用电源自动化开机的控制的引脚 */
  #if ENABLED(AUTO_POWER_CONTROL)
    /* 启用 自动开关机电源控制模块 */
    #define AUTO_POWER_FANS         // Turn on PSU if fans need power
     /* 定义 自动电源风扇 如果开关电源需要打开风扇 */
    #define AUTO_POWER_E_FANS
     /* 定义 挤出机自动开关风扇 */
    #define AUTO_POWER_CONTROLLERFAN
     /* 定义 自动电源控制器 */
    #define AUTO_POWER_CHAMBER_FAN
      /* 定义 自动电源开关封闭箱体风扇 */
    #define AUTO_POWER_COOLER_FAN
     /* 定义 自动开关机电源 冷却器风扇 */
    //#define AUTO_POWER_E_TEMP        50 // (°C) Turn on PSU if any extruder is over this temperature
      /* 定义 自定开关电源 挤出机温度控制 50° 如果有任何挤出机超过这个温度,打开开关电源。 */
    //#define AUTO_POWER_CHAMBER_TEMP  30 // (°C) Turn on PSU if the chamber is over this temperature
      /* 定义 自定开关电源 密封箱温度30° 如果密封箱超过温度,打开开关电源。 */
    //#define AUTO_POWER_COOLER_TEMP   26 // (°C) Turn on PSU if the cooler is over this temperature
      /* 定义 自定开关电源 冷却器温度控制 26° 如果有任何冷却器超过这个温度,打开开关电源。 */
    #define POWER_TIMEOUT              30 // (s) Turn off power if the machine is idle for this duration
      /* 定义 自动开关电源 电源超时 30 秒 如果机器在此期间闲置,请关闭电源 */
    //#define POWER_OFF_DELAY          60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time.
     /* 定义 电源关闭延时 60 秒 M81命令后断电延迟。让风扇跑一会儿很有用 */
  #endif
#endif

/**
 * Marlin 3D Printer Firmware
 * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
 *
 * Based on Sprinter and grbl.
 * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 */
#pragma once  /*#pragma once (比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次*/

/**
 * Configuration.h
 * 固件配置文件都在Configuration.h 中
 * Basic settings such as:
 * 基本设置有以下几个方面:
 * - Type of electronics
 * - 电器元件电路配置,意指世界各地某些厂商开发的板卡上的参数,例如对应芯片输出输入管脚定义,高低电平,信号功能等。
 * - Type of temperature sensor
 * - 温度传感器的类型 温度传感器是一种将温度变量转换为可传送的标准化输出信号的传感器。
 * - (常用分为热电偶与热电阻,这里常用于热床和挤出头温度监测,不达到热度主程序不启动。)
 * - Printer geometry  
 * - 打印成品最大体积尺寸,(常态设置长宽高行程)。
 * - Endstop configuration
 * - 限位开关设置 (常态设置为X,Y,Z轴最小起点,也可以根据结构不同设置成最大终点。Min X,Y,Z 和 Max X,Y,Z.)
 * - LCD controller
 * - LCD 显示屏的控制 (marlin标配单色点阵显示器有1602,和12864,还有3.5寸彩屏,4寸彩屏等内置库。
 * - 例:12864液晶屏用的比较多。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。
 * - 我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108、T6963C,ST7920等等。)
 * - Extra features
 * - 还有一些其他的额外功能 (例如:断电续打、打完关机、断料检测、热床调平、WiFi远程传文件、远程管理等。
 * -                      酷炫的还有自制时候安装一些灯,当然这些都可以通过定义管脚编程实现自动化开关亮度调节)
 *
 * Advanced settings can be found in Configuration_adv.h
 * - 更多的高级设置当然可以在高级配置文件里面找到
 */
#define CONFIGURATION_H_VERSION 02000902  /*定义当前配置文件版本是marlin 2.0.9.2版*/

//===========================================================================
//============================= Getting Started =============================
//===========================================================================
   /*开始走起正文*/
/**
 * Here are some useful links to help get your machine configured and calibrated:
 * 这给你几个链接,可能对于你调配机器有所帮助:调制和校准
 *
 * Example Configs:     https://github.com/MarlinFirmware/Configurations/branches/all
 * 配置案例大样链接
 * Průša Calculator:    https://blog.prusaprinters.org/calculator_3416/
 * 在线计算器链接,很有帮助,调配计算很多参数,比如常见的电机转数角度步数对应几何长度计算,各种类型耗材(PLA,ABS)线长和重量以及造价计算的对应关系。
 *                      Filament 耗材   Stepper Motors 步进电机  Acceleration 最大加速度
 * Calibration Guides:  https://reprap.org/wiki/Calibration
 *      调校指南          https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
 *                      https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
 *                      https://youtu.be/wAL9d7FgInk
 *
 * Calibration Objects: https://www.thingiverse.com/thing:5573
 * 调校可用到的打印物体文件 https://www.thingiverse.com/thing:1278865
 */

//===========================================================================
//========================== DELTA / SCARA / TPARA ==========================  DELTA三角洲架构,SCARA水平多关节架构,TPARA 直角坐标架构
//===========================================================================
//
// Download configurations from the link above and customize for your machine.
// Examples are located in config/examples/delta, .../SCARA, and .../TPARA.
// 从上面的链接下载配置并为您的机器定制。示例位于配置/示例/增量中,.../SCARA和.../TPARA。
//===========================================================================

// @section info

// Author info of this build printed to the host during boot and M115   
   /*这个版本的作者信息可以使用M代码M115反馈打印回传到主机*/
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
   /*定义STRING_CONFIG_H_AUTHOR函数的两个值没有和默认设置,设置固件作者信息,可在窗口通信的是候看到。谁做了改变*/
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
   /*定义SCUSTOM_VERSION_FILE函数,版本文件惯例,根目录的路径(无引号)*/
/**
 * *** VENDORS PLEASE READ ***
 *       制造商供应商请阅读
 * Marlin allows you to add a custom boot image for Graphical LCDs. 
 * 马林允许您为图形液晶显示器添加自定义引导映像。
 * With this option Marlin will first show your custom screen followed
 * 有了这个选项,马林将首先显示您的自定义屏幕
 * by the standard Marlin logo with version number and web URL.
 * 由标准的马林标志与版本号和网址。
 * We encourage you to take advantage of this new feature and we also
 * respectfully request that you retain the unmodified Marlin boot screen.
 * 我们鼓励您利用这一新功能,我们还敬请您保留未修改的马林引导屏幕。
 */

// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
   /*启动时显示马林引导屏幕。**支持批量生产模式** */
#define SHOW_BOOTSCREEN  
   /*定义 点亮启动屏幕,如果注释掉这行的话开机就不会显示开机初始画面,直接进入主界面。*/
// Show the bitmap in Marlin/_Bootscreen.h on startup.
   /* 启动时显示的位图(开机画面)在 Marlin/_ Bootsscreen . h文件中 */
//#define SHOW_CUSTOM_BOOTSCREEN
  /* 也可以定义第二顺序可以显示厂商自定义开机画面logo,取消//行首注释,即可显示 */
// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
  /* 显示位图屏幕状态文件在马林文件夹下 Statusscreen.h 中 */
//#define CUSTOM_STATUS_SCREEN_IMAGE
  /*定义 屏幕待机状态,如果注释掉这行的话就不会显示待机状态,直接运行下一步程序。*/
// @section machine 机器选择

/**
 * Select the serial port on the board to use for communication with the host.
 * 选择板上用于与主机通信的串行端口,高级的板子可能不止一个
 * This allows the connection of wireless adapters (for instance) to non-default port pins.
 * 这里允许无线适配器(例如)连接到非默认端口引脚。
 * Serial port -1 is the USB emulated serial port, if available.
 * 串行端口-1是USB仿真串行端口(如果有的话)。
 * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
 * 注意:第一个串行端口(-1或0)将始终由Arduino引导加载程序使用。
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
#define SERIAL_PORT 0
  /* 启动串行接口 0 ,以实现与主机通讯 */

/**
 * Serial Port Baud Rate
 * 串行接口通信传输波特率,与主机在一个频道。
 * This is the default communication speed for all serial ports.
 * 这里对于所有串行接口采用相同的默认的通讯速率
 * Set the baud rate defaults for additional serial ports below.
 * 为下面的其他串行端口设置波特率默认值。
 * 250000 works in most cases, but you might try a lower speed if
 * you commonly experience drop-outs during host printing.
 * 250000在大多数情况下是可行的,但是如果在主机打印过程中,可能您通常会遇到掉线的情况。
 * You may try up to 1000000 to speed up SD file transfer.
 * 您也可以尝试高达1000000来加速SD文件传输。
 * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
 */
#define BAUDRATE 250000
  /* 定义 默认运行250000 比特率 可自行修改 */
//#define BAUD_RATE_GCODE     // Enable G-code M575 to set the baud rate
  /* 定义 BAUD_RATE_GCODE  比特率改变可用M575命令,在做上位机时不通过改变固件即可更改。 可自行修改设置比特率 
     ([2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]) */
/**
 * Select a secondary serial port on the board to use for communication with the host.
 * 在主板上选择另外一个即第二个串行接口作为与主机通讯
 * Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
 * 目前以太网(-2)仅在Tinesy 4.1板上受支持。
 * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
//#define SERIAL_PORT_2 -1
  /* 定义运行第二个串行接口,取消注释即可运行。 */
//#define BAUDRATE_2 250000   // Enable to override BAUDRATE
  /* 定义运行第二个串行接口通讯速率设置为250000,取消注释即可运行。启用以覆盖BAUDRATE */
/**
 * Select a third serial port on the board to use for communication with the host.
 * 在主板上选择另外一个即第三个串行接口作为与主机通讯
 * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1
 * 目前仅在AVR系列,DUE系列,LPC1768/9和STM32系列/STM32F1系列芯片主板上受支持。
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
//#define SERIAL_PORT_3 1
   /* 定义运行第三个串行接口,取消注释即可运行。 */
//#define BAUDRATE_3 250000   // Enable to override BAUDRATE
   /* 定义运行第三个串行接口通讯速率设置为250000,取消注释即可运行。启用以覆盖BAUDRATE */
// Enable the Bluetooth serial interface on AT90USB devices
   /* 支持AT90USB驱动 设备上启用蓝牙串行接口 */
//#define BLUETOOTH
  /* 定义运行蓝牙串行接口,取消注释即可运行。 */
// Choose the name from boards.h that matches your setup
  /* 选用与你匹配主板的名字,可在主板库 boards.h 文件中查询,然后调用启用安装。 */
#ifndef MOTHERBOARD 
    /* #ifndef是"if not defined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试调用等。 */
  #define MOTHERBOARD BOARD_RAMPS_14_EFB
   /* 马林固件默认运行定义运行RAMPS_14_EFB主板,取消注释即可运行选择其他主板,
      RAMPS_14_EFB主板长这个样子https://reprap.org/wiki/RAMPS_1.4。 */
#endif 
   /* #ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。
       #ifndef 标识1 //判断"标识1"是否定义,如果被定义则返回假,如果没有被定义则返回真。

      语句1 #ifndef 标识1

       语句2 #define 标识1

        语句3 #endif

          语句4 ……

            语句5 ……

     该段代码意思是:如果标识1没有被定义,则重定义标识1,即执行语句2、语句3;如果标识1已经被定义,
     则直接跳过语句2、语句3,直接执行语句4、语句5、……

     */ 
   

// Name displayed in the LCD "Ready" message and Info menu
  /* 液晶屏“就绪待机等待”信息 和信息菜单中显示的名称 */
//#define CUSTOM_MACHINE_NAME "3D Printer"
   /* 定义运行显示自定义名称“3D打印机”,名称可更改,取消注释即可运行显示。 */
// Printer's unique ID, used by some programs to differentiate between machines.
   /* 打印机的唯一标识,被一些程序用来区分机器. */
// Choose your own or use a service like https://www.uuidgenerator.net/version4
   /* 这个链接是一个不错的机器串号在线生成器 */
//#define MACHINE_UUID "e138a2b7-9200-458e-ac60-d92f0f6d06a4"
  /* 定义运行显示自定义串号名称“e138a2b7-9200-458e-ac60-d92f0f6d06a4”,
     名称由上述链接在线串号生成器提供可更改,取消注释即可运行嵌入。 */
/**
 * Define the number of coordinated linear axes.
 * 定义搭配轴的数量
 * See https://github.com/DerAndere1/Marlin/wiki
 * axis 3D printers axes (AXIS*_NAME 'X', 'Y' or 'Z')
 * 三种打印机一般轴名称为X,Y,Z.
 * axes (AXIS*_NAME 'A', 'B' or 'C') or secondary linear axes (AXIS*_NAME 'U', 'V' or 'W').  
 * 更多的数控设备轴名称规范为,A,B,C,E.二者机器人坐标轴为U,V,W。
 * Each linear axis gets its own stepper control and endstop:
 * 每个线性轴都有自己的步进电机控制和限位开关:
 *   Steppers: *_STEP_PIN, *_ENABLE_PIN, *_DIR_PIN, *_ENABLE_ON
 *             步进电机控制信号函数名称为:
 *             _STEP_PIN,脉冲步数引脚,最重要的引脚,通过单片机给这个引脚PWM脉冲信号,控制电机运动轴运动角度。;
 *             _ENABLE_PIN,使能引脚。
 *             _DIR_PIN,控制电机方向引脚,正转或是逆转。
 *             _ENABLE_ON,使能引脚产生的使能信号,高电平停止工作,低电平正常工作;简单理解开关闭合,干还是停。
 *   Endstops: *_STOP_PIN, USE_*MIN_PLUG, USE_*MAX_PLUG
 *              _STOP_PIN,限位开关信号引脚 USE*MIN_PLUG,初始原点位信号 USE*MAX_PLUG,运动范围最长终点信号。
 *       Axes: *_MIN_POS, *_MAX_POS, INVERT_*_DIR
 *              _MIN_POS,轴初始位置信号  _MAX_POS,轴终点位置信号  INVERT_*_DIR,使某轴反转信号。
 *    Planner: DEFAULT_AXIS_STEPS_PER_UNIT, DEFAULT_MAX_FEEDRATE
 *             DEFAULT_AXIS_STEPS_PER_UNIT,默认轴初始位置  
               DEFAULT_MAX_FEEDRATE,  默认最大的轴转速,如挤出机挤出速度。                
 *             DEFAULT_MAX_ACCELERATION, AXIS_RELATIVE_MODES,         
 *             DEFAULT_MAX_ACCELERATION,默认各个轴的移动速度,可以调整修改  
 *             AXIS_RELATIVE_MODES, 轴相应模式
 *             MICROSTEP_MODES, MANUAL_FEEDRATE  微步进模式,  手动_进给速度。
 *
 * :[3, 4, 5, 6] (后边出现括号里的四个值一次对应于X,Y,Z,E四个轴的设置)
 */
//#define LINEAR_AXES 3
   /* 定义运行主线性轴数量 ,取消注释即可运行。*/
/**
 * Axis codes for additional axes:
 * 附加轴的轴名称
 * This defines the axis code that is used in G-code commands to
 * reference a specific axis.
 * 这定义了在g代码命令中用来引用特定轴的轴代码。
 * 'A' for rotational axis parallel to X
 * ”A"代表平行于X轴面旋转的轴
 * 'B' for rotational axis parallel to Y
 * ”B"代表平行于Y轴面旋转的轴
 * 'C' for rotational axis parallel to Z
 * ”C"代表平行于Z轴面旋转的轴
 * 'U' for secondary linear axis parallel to X
 * “U”代表平行于X的次级线性轴
 * 'V' for secondary linear axis parallel to Y
 * “V”代表平行于X的次级线性轴
 * 'W' for secondary linear axis parallel to Z
 * “W”代表平行于X的次级线性轴
 * Regardless of the settings, firmware-internal axis IDs are
 * 无论设置如何,固件内部轴标识为
 * I (AXIS4), J (AXIS5), K (AXIS6).
 */
#if LINEAR_AXES >= 4
  #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴A ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif
#if LINEAR_AXES >= 5
  #define AXIS5_NAME 'B' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴B ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif
#if LINEAR_AXES >= 6
  #define AXIS6_NAME 'C' // :['A', 'B', 'C', 'U', 'V', 'W']
  /* 定义默认运行主线性轴C ,没有A轴语句前加注释符,//注释掉即可关闭。 */
#endif

// @section extruder 选择挤出机

// This defines the number of extruders
   这里定义了挤出机的数量,最多几个,可用作不同功能9色打印。
// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1
   /* 定义默认保留主挤出机1运行 */
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
   市面常见挤出耗材直径可分为(1.75, 2.85, 3.0, ...).可用体积,长度传感器。
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
   /* 定义默认运行主挤出机采用1.75mm直径耗材 */
// For Cyclops or any "multi-extruder" that shares a single nozzle.
   对于非分体式挤出机。多合一,例如2进1出,3进1出,多进一出等共用单个喷嘴的挤出机。
//#define SINGLENOZZLE
   /* 定义默认保留单喷嘴运行 */
// Save and restore temperature and fan speed on tool-change.
   /* 临时暂停或更换工具时保存并恢复温度和风扇速度。 */
// Set standby for the unselected tool with M104/106/109 T...
   用G代码中的,M104/106/109 T...等代码留作备用工具开发。
#if ENABLED(SINGLENOZZLE)
    /* 定义 单喷嘴 开关*/
  //#define SINGLENOZZLE_STANDBY_TEMP
    /* 定义 开启提升 单喷嘴_待机_温度 具体值见函数解释,一般为G代码 */
  //#define SINGLENOZZLE_STANDBY_FAN
    /* 定义 开启提升 单喷嘴散热风扇_待机_温度 具体值见函数解释,一般为G代码 */
#endif

/**
 * Multi-Material Unit
 * 多材料单位组合
 * Set to one of these predefined models:
 *  设置为以下预定义模型之一:
 *   PRUSA_MMU1           : Průša MMU1 (The "multiplexer" version)  Průša MMU1(“多路混合”版本)
 *   PRUSA_MMU2           : Průša MMU2
 *   PRUSA_MMU2S          : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
 *                                        需要带运动传感器的MK3S挤出机,挤出机= 5台
 *   EXTENDABLE_EMU_MMU2  : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
 *   改进版 MMU2              具有可配置耗材细丝数量的MMU(ERCF、SMuFF或与Průša MMU2兼容的类似固件)
 *   EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
 *   改进版 MMU2s             具有可配置耗材细丝数量的MMU(ERCF、SMuFF或与Průša MMU2兼容的类似固件)
 * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
 * 如果内存管理单元出现故障,需要喷嘴停放功能来停放打印头。
 * See additional options in Configuration_adv.h.
 * 请参见高级结构配置库文件中的其他选项
 */
//#define MMU_MODEL PRUSA_MMU2
    /* 定义默认运行MMU_MODEL PRUSA_MMU2模式,注释掉//即可启动配置。 */

// A dual extruder that uses a single stepper motor
   /* 共用一个步进电机的双挤出机 */
   
//#define SWITCHING_EXTRUDER  
  /* 定义启动挤出机开关 ,注释掉即可启用。*/
  
#if ENABLED(SWITCHING_EXTRUDER)
   /* 定义挤出机开关使能。*/
  #define SWITCHING_EXTRUDER_SERVO_NR 0
      /* 定义 挤出机开关私服系统函数 值为 0 低电平 详见此函数库文件 */
  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
      /* 定义 挤出机开关伺服轴角度 ,角度可以适配E0,E1,或者E2,E3挤出机 */
  #if EXTRUDERS > 3  /* 当挤出机数量超过3个时候执行以下条件函数 */
    #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
       /* 定义 挤出机开关私服系统函数 值为 1 高电平 详见次函数库文件 */
  #endif
#endif

// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
   /* 一个双头喷嘴 用使用伺服电机提升/降低一个(或两个)喷嘴 这种状态的挤出机时启动这条命令 */
//#define SWITCHING_NOZZLE
   /* 定义启动喷嘴开关即可启用,不常见。 */
#if ENABLED(SWITCHING_NOZZLE) /* 同上释义 */
  #define SWITCHING_NOZZLE_SERVO_NR 0
  //#define SWITCHING_NOZZLE_E1_SERVO_NR 1          // If two servos are used, the index of the second
  #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 }   // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
#endif

/**
 * Two separate X-carriages with extruders that connect to a moving part
 * 两个独立的X-龙门托架部件的挤出机.带有连接到移动部件的挤出机
 * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.
 * 通过螺线管对接机构。需要SOL1_PIN和SOL2_PIN。预留引脚,查看请到该函数库文件定义引脚查询
 */
//#define PARKING_EXTRUDER
 /* 定义 挤出机停车 */

/**
 * Two separate X-carriages with extruders that connect to a moving part
 * 两个独立的X-龙门托架部件的挤出机.带有连接到移动部件的挤出机
 * via a magnetic docking mechanism using movements and no solenoid
 * 通过使用移动的磁性对接机构并且没有螺线管,参照以下网站查看结构。
 * project   : https://www.thingiverse.com/thing:3080893
 * movements : https://youtu.be/0xCEiG9VS3k
 *             https://youtu.be/Bqbcs0CU2FE
 */
//#define MAGNETIC_PARKING_EXTRUDER
  /* 定义 磁力停车挤出机 注释掉即可使用 */
#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER)
   /* 停车挤压机、磁性停车挤压机 二选一 */

  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
   /* 定义 停车挤出机 X轴 坐标范围 既两个挤出机间距 */
  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // (mm) Distance to move beyond the parking point to grab the extruder
   /* 定义 停车挤出机 抓取距离 为 1 (毫米)移动到停车点以外以抓取挤出机的距离 */
  #if ENABLED(PARKING_EXTRUDER)
   /* 定义 停车挤出机使能开关 */
    #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
    /* 停车挤出机螺线管回抽 如果启用,电磁阀不会被外加电压磁化 */
    #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
    /* 定义 停车挤出机螺线管管脚有效 LOW 低电平 原版应该写错了 应该为 0  低或高引脚信号激励线圈 */
    #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // (ms) Delay for magnetic field. No delay if 0 or not defined.
    /* 定义 停车挤出机螺线管延迟转数 250 磁场延迟(毫秒)。如果为0或未定义,则无延迟。 */
    //#define MANUAL_SOLENOID_CONTROL                   // Manual control of docking solenoids with M380 S / M381
    /* 定义 手动螺线管控制 用M380 S / M381手动控制对接电磁阀 M380 和 M381 为G代码命令 */
  #elif ENABLED(MAGNETIC_PARKING_EXTRUDER)
    /* 如果不是前段命令提到的挤出机 执行磁力挤出命令 */
    /* #elif 使您得以创建复合条件指令。如果前面的 #if 和前面的任何 #elif(可选)指令表达式的计算结果都不是 true,则将计算 #elif 表达式。如果 #elif 表达式计算为 true,编译器将计算位于 #elif 和下一个条件指令之间的所有代码。例如:

可以使用运算符 ==(相等)、!=(不相等)、&&(与)及 ||(或)来计算多个符号。还可以用括号将符号和运算符分组。

#elif 等效于使用:

使用 #elif 更简单,因为每个 #if 都需要一个 #endif,而 #elif 即使在没有匹配的 #endif 时也可以使用。

有关如何使用 #elif 的示例,请参见 #if。*/
   
    #define MPE_FAST_SPEED      9000      // (mm/min) Speed for travel before last distance point
    /*定义磁力挤出机最快速度 9000  (毫米/分钟)最后一个距离点之前的行驶速度 */
    #define MPE_SLOW_SPEED      4500      // (mm/min) Speed for last distance travel to park and couple
    /* 定义磁力挤出机最慢速度      4500  (毫米/分钟)最后一次停车和行程距离的速度 */
    #define MPE_TRAVEL_DISTANCE   10      // (mm) Last distance point
    /* 定义 磁力挤出机行程距离  最后距离点收工远离点,因为挤出头有温度,会把模型停留超时融化 */
    #define MPE_COMPENSATION       0      // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling
    /* 定义 磁力挤出机补偿 低电平 0 启动配置 偏移补偿-1,0,1(乘法器),仅用于耦合 */
  #endif

#endif

/**
 * Switching Toolhead
 * 切换工具头
 * Support for swappable and dockable toolheads, such as
 * 支持可交换和可停靠的工具头,例如
 * the E3D Tool Changer. Toolheads are locked with a servo.
 * E3D工具更换器。工具头被伺服系统锁定 有兴趣请见此视频链接 https://www.bilibili.com/s/video/BV1D5411a7Cw
 * http://www.3dwhere.com/models/73lxdohdgfe5c8i0
 */
//#define SWITCHING_TOOLHEAD
  /* 定义 开关换刀工具系统 */
/**
 * Magnetic Switching Toolhead
 * 磁性开关换刀工具系统
 * Support swappable and dockable toolheads with a magnetic
 * 支持可交换和可停靠到带有磁性的换刀系统
 * docking mechanism using movement and no servo.
 * 使用移动和无伺服的对接机构
 */
//#define MAGNETIC_SWITCHING_TOOLHEAD
  /* 定义 磁性自动换刀系统 */
/**
 * Electromagnetic Switching Toolhead
 * 电磁性自动换刀系统
 * Parking for CoreXY / HBot kinematics.
 * CoreXY / HBot运动学的停车。
 * Toolheads are parked at one edge and held with an electromagnet.
 * 工具头停在一边,用电磁铁固定。
 * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4
 * 支持大于2个以上工具头,详见youtube
 */
//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD
 /* 定义 电磁控制自动换刀工具系统 */

#if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
 /* 如果三种结构之一,条件成立执行相应程序 */
  #define SWITCHING_TOOLHEAD_Y_POS          235         // (mm) Y position of the toolhead dock
  /* 定义 普通自动换刀系统 Y 轴 位置 235 工具头底座的Y位置 */
  #define SWITCHING_TOOLHEAD_Y_SECURITY      10         // (mm) Security distance Y axis
  /* 定义 普通自动换刀系统 Y 轴 安全距离 10 mm (毫米)安全距离Y轴 */
  #define SWITCHING_TOOLHEAD_Y_CLEAR         60         // (mm) Minimum distance from dock for unobstructed X axis
  /* 定义 普通自动换刀系统 Y 轴 悬离  60 mm   不受阻碍的X轴到装置最小距离(毫米) */
  #define SWITCHING_TOOLHEAD_X_POS          { 215, 0 }  // (mm) X positions for parking the extruders
  /* 定义 普通自动换刀系统 X 轴 位置 215 工具头底座的X位置 */
  #if ENABLED(SWITCHING_TOOLHEAD)
    /* 启动 普通自动换刀系统 */
    #define SWITCHING_TOOLHEAD_SERVO_NR       2         // Index of the servo connector
    /* 定义 普通自动换刀系统伺服电机 引脚 2 伺服连接器的索引 */
    #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 }  // (degrees) Angles for Lock, Unlock
    /* 定义 普通自动换刀系统伺服电机 轴角度 0,180 锁定、解锁角度(度) */
  #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD)
    /* 同以上释义,磁性自动换刀系统 */
    #define SWITCHING_TOOLHEAD_Y_RELEASE      5         // (mm) Security distance Y axis
    #define SWITCHING_TOOLHEAD_X_SECURITY   { 90, 150 } // (mm) Security distance X axis (T0,T1)
    //#define PRIME_BEFORE_REMOVE                       // Prime the nozzle before release from the dock
    #if ENABLED(PRIME_BEFORE_REMOVE)
      #define SWITCHING_TOOLHEAD_PRIME_MM           20  // (mm)   Extruder prime length
      #define SWITCHING_TOOLHEAD_RETRACT_MM         10  // (mm)   Retract after priming length
      #define SWITCHING_TOOLHEAD_PRIME_FEEDRATE    300  // (mm/min) Extruder prime feedrate
      #define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400  // (mm/min) Extruder retract feedrate
    #endif
  #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
    /* 同以上释义 电磁性自动换刀系统 */
    #define SWITCHING_TOOLHEAD_Z_HOP          2         // (mm) Z raise for switching
  #endif
#endif

/**
 * "Mixing Extruder"
 * 混合挤出机
 *   - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
 *    添加g代码M163和M164来设置和“提交”当前混合因子。
 *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
 *   扩展步进程序,按照混合比例移动多个步进器。
 *   - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
 *   可选支持重复固件的“M164 S”支持虚拟工具。
 *   - This implementation supports up to two mixing extruders.
 *   该实施方案最多支持两台混合挤出机。
 *   - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
 *   为M165启用G1直接混和和G1混和(来自皮娅·陶伯特的参考实现)。
 */
//#define MIXING_EXTRUDER
  /* 定义 混合挤出机 */
#if ENABLED(MIXING_EXTRUDER)
  /* 开启 混合挤出机 */
  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
  /* 定义 混合挤出机步进电机 2 混合挤出机中的步进机数量 */
  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
  /* 定义 混合虚拟工具 16 使用M163和M164的虚拟工具方法 */
  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
  /* 定义 G1的直接混合 在G1运动命令中允许ABCDHI混合因子 */
  //#define GRADIENT_MIX           // Support for gradient mixing with M166 and LCD
  /* 定义 渐变混合 M166和液晶显示器支持渐变混合 */
  //#define MIXING_PRESETS         // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS
   /* 定义 混合预设 为2或3个混合步进器指定8个默认的垂直工具预设 */
  #if ENABLED(GRADIENT_MIX)
   /* 启动 渐变混合 */
    //#define GRADIENT_VTOOL       // Add M166 T to use a V-tool index as a Gradient alias
     /* 定义 渐变虚拟工具 添加M166 T以使用V形工具索引作为渐变别名 */
  #endif
#endif

// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
/*挤出机的偏移 如果使用多个并在更换时依靠固件定位,请取消注释 */
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
 /* 对于挤出机0(默认挤出机),偏移量必须为X=0,Y=0 */
// For the other hotends it is their distance from the extruder 0 hotend.
  /* 对其他挤出机来说,这是他们离挤压机的距离。 */
//#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
  /* 定义 挤出机偏移X 轴 (毫米)每个喷嘴的相对X偏移 */
//#define HOTEND_OFFSET_Y { 0.0, 5.00 }  // (mm) relative Y-offset for each nozzle
   /* 定义 挤出机偏移Y轴 (毫米)每个喷嘴的相对X偏移 */
//#define HOTEND_OFFSET_Z { 0.0, 0.00 }  // (mm) relative Z-offset for each nozzle
    /* 定义 挤出机偏移Z轴 (毫米)每个喷嘴的相对X偏移 */
// @section machine

/**
 * Power Supply Control
 * 电源供给控制
 * Enable and connect the power supply to the PS_ON_PIN.
 * 启用电源并将电源连接到电源开引脚。
 * Specify whether the power supply is active HIGH or active LOW.
 * 指定电源是高电平有效还是低电平有效。
 */
//#define PSU_CONTROL
  /* 定义 电源供给控制 */
//#define PSU_NAME "Power Supply"
 /* 定义  电源供给控制 名称 电源供给 */

#if ENABLED(PSU_CONTROL)
    /* 启动 电源供给控制 */
  //#define MKS_PWC                 // Using the MKS PWC add-on
    /* 定义 MKS 电源供给控制 用MKS电源供给控制模块 */
  //#define PS_OFF_CONFIRM          // Confirm dialog when power off
    /* 定义 电源关闭确认 关机时确认对话框 */
  //#define PS_OFF_SOUND            // Beep 1s when power off
   /* 定义  电源关闭声音   Bi 1秒 当切断电源时 */
  #define PSU_ACTIVE_STATE LOW      // Set 'LOW' for ATX, 'HIGH' for X-Box
  /* 定义 开关电源控制 活动状态 低电平 为ATX设置“低”,为X-Box设置“高”  */
  //#define PSU_DEFAULT_OFF         // Keep power off until enabled directly with M80
    /* 定义 开关电源控制 默认关闭状态 保持电源关闭,直到直接启用M80代码 */
  //#define PSU_POWERUP_DELAY 250   // (ms) Delay for the PSU to warm up to full power
    /* 定义 开关电源控制 默认延迟 250 ms  (毫秒)延迟PSU预热至满功率 */
  //#define PSU_POWERUP_GCODE  "M355 S1"  // G-code to run after power-on (e.g., case light on)
    /* 定义 开关电源控制 G代码 为 M355 S1 开机后运行的g代码(例如,机箱灯亮) */
  //#define PSU_POWEROFF_GCODE "M355 S0"  // G-code to run before power-off (e.g., case light off)
     /* 定义 开关电源控制 G代码 为 M355 S0 断电前运行的g代码(例如,外壳灯关闭) */
  //#define AUTO_POWER_CONTROL      // Enable automatic control of the PS_ON pin
   /* 定义 自动关控制模块  启用电源自动化开机的控制的引脚 */
  #if ENABLED(AUTO_POWER_CONTROL)
    /* 启用 自动开关机电源控制模块 */
    #define AUTO_POWER_FANS         // Turn on PSU if fans need power
     /* 定义 自动电源风扇 如果开关电源需要打开风扇 */
    #define AUTO_POWER_E_FANS
     /* 定义 挤出机自动开关风扇 */
    #define AUTO_POWER_CONTROLLERFAN
     /* 定义 自动电源控制器 */
    #define AUTO_POWER_CHAMBER_FAN
      /* 定义 自动电源开关封闭箱体风扇 */
    #define AUTO_POWER_COOLER_FAN
     /* 定义 自动开关机电源 冷却器风扇 */
    //#define AUTO_POWER_E_TEMP        50 // (°C) Turn on PSU if any extruder is over this temperature
      /* 定义 自定开关电源 挤出机温度控制 50° 如果有任何挤出机超过这个温度,打开开关电源。 */
    //#define AUTO_POWER_CHAMBER_TEMP  30 // (°C) Turn on PSU if the chamber is over this temperature
      /* 定义 自定开关电源 密封箱温度30° 如果密封箱超过温度,打开开关电源。 */
    //#define AUTO_POWER_COOLER_TEMP   26 // (°C) Turn on PSU if the cooler is over this temperature
      /* 定义 自定开关电源 冷却器温度控制 26° 如果有任何冷却器超过这个温度,打开开关电源。 */
    #define POWER_TIMEOUT              30 // (s) Turn off power if the machine is idle for this duration
      /* 定义 自动开关电源 电源超时 30 秒 如果机器在此期间闲置,请关闭电源 */
    //#define POWER_OFF_DELAY          60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time.
     /* 定义 电源关闭延时 60 秒 M81命令后断电延迟。让风扇跑一会儿很有用 */
  #endif
#endif

标签:12,定义,16,挤出机,endif,TOOLHEAD,2.0,SWITCHING,define
来源: https://blog.csdn.net/m0_56455840/article/details/122006830