Marlin 使用自定义Serial1/2/3额外串口

本文最后更新于:2019年6月14日 上午

按照Arduio官方串口文档教程 ,Mege系列主板是支持最多4路硬件串口的。
而我的Marlin主板正是使用了Mega2560(最常见的3D打印主板),因此也是可以添加额外的自定义串口,并且还有官方软件库支持。

按照官方例程:Arduino MultiSerialMega
在Marlin的setup()函数中添加了如下测试代码:

1
2
3
4
5
6
setup(){
......
Serial2.begin(9600);
Serial2.write("serial2 is ready!\n");
......
}

然而编译时却报错了,提示:

  • ‘Serial2’ was not declared in this scope
  • ‘SERIAL_8E1’ was not declared in this scope

简单的操作就是额外包含头文件 arduino.h,因为该处程序并并不是在 .ino 文件中编写的。然而包含之后并没有用,查询了多方资料加测试,才找到最终解决办法:
需要添加头文件 #include <hardwareSerial.h> (arduino.h不用添加)
是不是贼拉简单,害我折腾了一个小时……

另外多说一句 Arduino还支持模拟串口,可以任意指定引脚。SoftwareSerial Library
不过经过测试,板子只能发送数据但无法接受,这个原因比较深奥,关乎到引脚中断和数接受原理。但官方的库和例程看似是可行的,不知道为什么(用的是硬件串口,但使用的模拟方式控制?可是我也测试了,也不行啊。暂且不深究了)

参考资料:


Marlin 使用自定义Serial1/2/3额外串口
http://lonlypan.com/2019/06/14/Marlin使用自定义Serial2额外串口.md/
作者
LonlyPan
发布于
2019年6月14日
许可协议