主循环这块算是Grbl中最复杂的内容了,里面掺杂了很多模块调用,我们抽丝剥茧,顺着脉络一点点进行。先主要分析main.c和protocol.c
首先在主入口中我们了解过,Arduino中把main拆分成了setup和loop,setup一般用于只需要运行一次的配置功能,loop用于需要反复执行的功能。Grbl的main函数也做了类似的事情。
我们简化一下,只看关键信息:
Main(){
// 初始化系统参数,包括变量,中断等
For(;;){
// 运行时初始化
protocol_main_loop(); // 主循环
}
}
我们再看下protocol_main_loop()这个函数,它做了一件重要的事情,就是处理Grbl协议,启动一个无限循环,读取串口字符串,解析字符串,然后分发到相应的执行机构!其他的代码,基本上都是为了保证这一过程顺利进行而执行的一系列检查。
简化的代码如下: