marlin2.1.1中的主程序void loop() { do { idle(); #if ENABLED(SDSUPPORT) if (card.flag.abort_sd_printing) abortSDPrinting(); if (marlin_state == MF_SD_COMPLETE) finishSDPrinting(); #endif queue.advance(); #if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) powerManager.checkAutoPowerOff(); #endif endstops.event_handler(); TERN_(HAS_TFT_LVGL_UI, printer_state_polling()); TERN_(MARLIN_TEST_BUILD, runPeriodicTests()); } while (ENABLED(__AVR__)); // Loop forever on slower (AVR) boards }的解读
时间: 2024-04-24 12:22:20 浏览: 112
Marlin-Marlin_v1.zip_3d printer_Marlin_v1.zip_marlin
这段程序是 Marlin 2.1.1 中主程序 void loop() 的代码。该函数的作用是循环运行各种功能模块,以确保 3D 打印机的正常运行。以下是对该函数的具体解读:
1. do-while 循环语句,表示无限循环,直到程序被强制终止。
2. idle() 函数用来让 CPU 进入空闲状态,以减少功耗和热量。
3. 如果启用了 SD 卡支持,程序会检查是否需要中止 SD 打印,以及是否需要完成 SD 打印。
4. queue.advance() 函数用来推进打印队列,以确保 3D 打印机能够按照正确的顺序打印。
5. 如果启用了自动关机功能,程序会检查是否需要自动关机。
6. endstops.event_handler() 函数用来处理机械开关的事件。
7. 如果启用了 TFT LCD 显示器支持,程序会检查打印机状态并更新显示器 UI。
8. 如果启用了测试模式,程序会运行一些周期性的测试。
9. 在 AVR 等速度较慢的单片机上,程序会一直循环运行,直到强制终止。
总之,这段程序是 Marlin 2.1.1 中主程序 void loop() 的核心代码,它确保了 3D 打印机的正常运行,同时支持多种功能和扩展。
阅读全文