如题所述
使用空闲中断。HAL库中,从中断到回调函数运行了不少的程序,频繁的中断或会造成数据溢出,为了避免这个问题,使用指定接收一定长度的数据,再调用回调函数,这可以接收大数据,但是这种情况则造成了,要求每次的包是固定长度,为了解决以上一些问题,网上最常用的办法是使用空闲中断,即在串口空闲的时候,触发一次中断,通知内核,本次运输完成了。串口空闲中断的判定是:当串口开始接收数据后,检测到1字节数据的时间内没有数据发送,则认为串口空闲了。由于内核在串口接收数据到空闲这段时间,是不受理串口数据的,所以还需要使用DMA来协助把数据传送到指定的地方,当数据传输完成后,通知内核去处理。
温馨提示:答案为网友推荐,仅供参考