2025年marlin源码分析 一

marlin源码分析 一文章说明 学习记录 本人小白 内容不一定正确 欢迎指正 由于最近在 diy 3D 打印机 于是接触到 marlin 固件 版本 Marlin2 0 如果你只是为了使用固件 并不需要研究固件 只需修改配置文件即可 书写习惯 marlin 注释

大家好,我是讯享网,很高兴认识大家。

文章说明:

学习记录,本人小白,内容不一定正确,欢迎指正。由于最近在diy 3D打印机,于是接触到marlin固件。

版本Marlin2.0

如果你只是为了使用固件,并不需要研究固件,只需修改配置文件即可。

“由此可知:” 指我的推测

“由此猜测:” 指我的推测,但不是很确定

marlin固件功能

  • 读取解释G-code指令
  • 控制步进电机
  • 温度控制
  • GUI
  • ... ...

loop与setup

首先找到 loop()函数 和 setup() 函数

//我也刚接触arduino不久按我理解这个loop相当于正常C语言main()函数的while()

//而setup()函数一般是正常C语言while()之前的部分,用于初始化

这两个函数都位于MarlinCore.cpp

loop()

void loop() { do { idle(); #if ENABLED(SDSUPPORT) if (card.flag.abort_sd_printing) abortSDPrinting(); if (marlin_state == MF_SD_COMPLETE) finishSDPrinting(); #endif queue.advance(); endstops.event_handler(); TERN_(HAS_TFT_LVGL_UI, printer_state_polling()); } while (ENABLED(__AVR__)); // Loop forever on slower (AVR) boards }

讯享网

idle()函数

marlin注释:调用idle()来处理G-code命令之间的所有任务,idle执行期间无法执行G-codes队列,但许多g代码可以像宏一样在任何时候直接调用。

由此可知:G-code是一堆指令,存在一个队列存放这些指令且按顺序执行。指令执行间隔会调用idle()这个函数。

继续看idle()函数,跳转去看注释。

marlin注释:Core Marlin activities(填充队列)、管理加热器、看门狗、内存卡拔插处理...    (先搁置)

SDSUPPORT

这四行是判断是否使用sd卡功能,sd卡用于更新固件、存放打印模型(G-code)文件。


讯享网

queue.advance()

queue是之前提到的G-codes队列的实例,advance()方法应该是执行的意思。

endstops.event_handler()

marlin注释:endstops是管理 endstops 的单例对象。

而event_handler()的注释是:"Report endstop hits to serial. Called from loop()."

由此猜测:这个是打印结束的回调函数,或者是G-codes队列每一步执行完毕的回调。(搁置)

TERN_(HAS_TFT_LVGL_UI, printer_state_polling())

marlin注释:#define TERN_(O,A)      _TERN(_ENA_1(O),,A)     // OPTION ? 'A' : '<nul>'

由此可知:O应该是OPTION,即O为1时执行A否则什么也不干。即判断HAS_TFT_LVGL_UI是否开启,开启则执行printer_state_polling()。是一个在屏幕显示打印状态的函数。

while (ENABLED(__AVR__))

marlin注释:// Loop forever on slower (AVR) boards  

在较慢的(AVR)板上永远循环,在快的板子也要永远循环才对。

由此猜测:在较慢的(AVR)板上使用while进行循环比loop更快。

setup()

初始化函数,跳转到注释:

/

 * Marlin Firmware entry-point. Abandon Hope All Ye Who Enter Here.

 *

小讯
上一篇 2025-03-24 19:24
下一篇 2025-02-07 19:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/19266.html