Hi,
我们可以讨论下,这是我的观点。我看的代码是从机代码,逻辑可能与主机又一定区别。
一帧报文由主机的header和从机的response构成。

首先在lin初始化时候调用lin_lld_uart_init,设置了lin的中断类型为LBKDIE,同时也调用自适应波特率初始化autobaud_init,所以首先进中断处理的应该是你的第二段参考代码而不是第一段代码。
主机首先发送break信号,从机收到break信号,从机进入第二段代码以后它禁用了break中断,然后又开启边沿检测中断,目的是为了边沿来临时再进入你贴的第一段参考代码,重新使能LBKDIE。这样就可以重新检测下一次主机header的break区域。
autobaud_init初始化里还初始化了FTM0,设置为输入捕获串口0,它应该是根据synch域来调整自己lin的波特率。主机是没有自适应波特率功能的。
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 days after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------