接收函数是在中断中进行,首先来看下中断函数的注册位置:
在Marlin的setup()函数中,初始化串口的函数中:
此处是初始化串口位置:
我们打开begin(),会看到在最后的位置会注册中断函数:
中断接收函数就是:_rx_complete_irq()
看一下该函数:
接收函数首先去取串口数据,如果取到了正确的数据
接下来判断环形Buffer是不是满了,如果满了(即将要写入的头指针位置(当前指针+1)与读指针一样的话,说明环形Buffer满了),则不作任何操作,但是此时已经将数据取出来了,所以最终结果是:如果环形Buffer 满了,则丢弃该数据。
原创文章,转载请注明出处,谢谢!
QQ:26366050