干貨福利,第一時間送達!
1、Marlin2.0 參數存儲M命令
Marlin2.0 的存儲功能主要依靠 EEPROM 來進行,Marlin也提供了相應的M代碼來協(xié)助 3D 打印愛好者 進行調試,這些參數配置完畢以后可以存儲在單片機的 EEPROM 中,關于 EEPROM 的操作,主要有如下 指令:比如我們可以通過串口來更改 PID 值、步進電機運行的加速度和最大速度的設置,設置完畢以后輸入以 上對應的存儲指令 M500 即可完成參數的保存,如下所示:以上這些參數都可以通過串口進行修改,有一些支持LCD的機器,也可以通過LCD進行修改,修改參數 后可以調用 M503 獲取設置的結果:但是這個結果是當前生效,當設備斷電重啟后,設置的參數也就消失了,如果想要斷電保存,則需要設 置完參數以后調用 M500 命令進行保存,然后通過 M501 讀取保存的結果,如果想恢復成原來的參數,也 可以通過 M502 命令將參數恢復到出廠前。
2、Marlin2.0 參數存儲方式代碼分析
當我們在串口輸入M代碼的時候,程序會執(zhí)行到Gcode.cpp中對應的 case 分支:case?'M':
switch?(parser.codenum)
{
??//....
??case?500:?M500();?break;??//?M500:?將設置好的參數保存到EEPROM中
??case?501:?M501();?break;??//?M501:?從EEPROM中讀取設置參數
??case?502:?M502();?break;??//?M502:?恢復參數為出廠前的狀態(tài)
??#if?DISABLED(DISABLE_M503)
??case?503:?M503();?break;??//?M503:?打印當前設置的參數(不是從EEPROM中讀取)
??#endif
??//...
?...
}
可左右滑動查看
對應的M代碼實現(xiàn)位于Marlin/src/gcode/eeprom/M500-M504.cpp中://M500:將設置好的參數保存到EEPROM中
void?GcodeSuite::M500()?{
??(void)settings.save();?//MarlinSettings?settings;
}
//M501:從EEPROM中讀取設置參數
void?GcodeSuite::M501()?{
??(void)settings.load();?//MarlinSettings?settings;
}
//M502:恢復參數為出廠前的狀態(tài)
void?GcodeSuite::M502()?{
??(void)settings.reset();?//MarlinSettings?settings;
}
#if?DISABLED(DISABLE_M503)
?//M503:打印當前設置的參數(不是從EEPROM中讀取)
?void?GcodeSuite::M503()?{
?(void)settings.report(!parser.boolval('S',?true));?//MarlinSettings
settings;
}
#endif?//?!DISABLE_M503
可左右滑動查看
Marlin的參數存儲主要是依靠 MarlinSettings 類來實現(xiàn),位于Marlin/src/module/Settings.h以 及Marlin/src/module/Settings.cpp中,最終會調用到具體的存儲硬件的讀寫函數。往期精彩
開源Marlin2.x源代碼架構學習筆記步進電機驅動在3D打印應用的學習筆記(一)光固化3D打印懸空和支撐講解3D打印過程與最近的學習成果
兩個最常用的3D打印機切片軟件
3D打印機marlin固件框架與GCode命令總結
3D打印機Marlin固件串口功能解析和程序移植
讓野火F103開發(fā)板支持Marlin2.0固件是什么體驗?3D打印主控板成員 1
C語言映射表在嵌入式串口解析、UI設計中的應用(值得收藏并實踐的精華帖)
覺得本次分享的文章對您有幫助,隨手點
[在看]并轉發(fā)分享,也是對我的支持。




