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