UART一次接收数据超过缓冲区大小容易触发err中断
-
不确定接收的数据长度,比如给串口的buffer大小500字节,但是一次性来了600字节,在接收满500字节时是会触发FULL回调,这个时候如何处理,才不至于让后续的501~600造成ERR中断?
试过两种处理:
1、回调内,当FULL或者IDLE时,置标志位,在应用task内根据取数据,并重新给新的缓冲区(IDLE要重新开启接收);
2、回调内,当FULL时,直接在回调内取数据及设置新缓冲区,IDLE则按方法1。
这两种方法都会在接收到超过缓冲区大小的数据时,出现err中断 -
-
sunxuehu 是用的这个,这意味着我需要用一个新的buffer给它?因为原本的数据还没取出来。
-
是的,需要一个新的buff暂存下。要是不需要接收多余数据,就不执行任何操作就行,底层会关掉接收功能且不会出错
-
sunxuehu 数据是需要的,肯定不能丢掉。行吧,换新缓冲区就得调整下代码了,原来没设计使用多个缓冲区
2/5
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...