先描述现象:在使用串口中断接收数据时,在串口中断中把接收到的字节数,通过队列的方式传递给其他任务做解析,串口中断中明明接收到了数据,并且把data_size写入了队列,但是在任务函数中,能进入if的条件内的代码,但是接收到的data_size是0.
以上是串口中断中的代码
以上是任务函数中的代码
问题就出在,接收到的数据超过了uint8_t的大小,高字节被截断了,所以就出现了,队列明明接收到了数据,但是接收到的数据是0
解决方法:改用 16 位变量存放长度
先描述现象:在使用串口中断接收数据时,在串口中断中把接收到的字节数,通过队列的方式传递给其他任务做解析,串口中断中明明接收到了数据,并且把data_size写入了队列,但是在任务函数中,能进入if的条件内的代码,但是接收到的data_size是0.
以上是串口中断中的代码
以上是任务函数中的代码
问题就出在,接收到的数据超过了uint8_t的大小,高字节被截断了,所以就出现了,队列明明接收到了数据,但是接收到的数据是0
解决方法:改用 16 位变量存放长度