|
各位好: 最近在研究MCU與感測器結合應用,使用UART進行資料接收,但發現接收端好像來不急接收感測器端吐出來的資料,目前設定的情況是我使用Uart中斷接收的方式,buadrate設定為115200,感測器由0開始計數,但接收端的部份中間固定有幾比資料會遺失,請問能否協助解答? UART DataBuff[0] = 0x2 UART DataBuff[0] = 0x5 UART DataBuff[0] = 0x8 UART DataBuff[0] = 0x11 UART DataBuff[0] = 0x14 UART DataBuff[0] = 0x17 UART DataBuff[0] = 0x20 UART DataBuff[0] = 0x23
|
求问诡异的问题,eth网口ping不通
I2C 错误代码含义
在 LwIP_HTTP_Server_Netconn_RTOS 工程中添加 USART3 功能时遇到问题
串口+DMA发数据
求P-NUCLEO-LRWAN3中的STM32F746ZG的网关固件bin文件
串口DMA收发出现ORE错误
STM32F769I-DISCO开发包LCD DSI示例程序如何回读LCD 驱动IC的寄存器?
stm32使用hal库数据疑问
stm32使用hal库开发串口通讯问题
COD
微信公众号
手机版
这里的判读会发生错误,当RXLINE小于4时,取的值已经超出范围。回调函数尽量只做赋值,数据打印或者查询在外部处理。
針對Rxline<4的情況請問您有比較好的處理方式可以提供參考嗎?
除了printf外,想請問是否有其它可以做修改的部份?
在外部增加一个RXLINE的判断,目前只能是这样。另外,我感觉应该用UartHandle结构体中接收缓冲区的内容进行操作。
个人拙见:你这个回调函数中应该是通过固定的结束符连续四个0xFF来判断数据结束的吧。换个思路可以利用波特率的特性,即每个数据之间的时间间隔是固定的,以这个时间间隔来判定数据是否结束(可以使用定时器进行时间倒数,超时自动认定数据结束)。至于数据的内容正不正确不应在这里进行处理判断,这里只做一件事就是数据的接收。在数据接收完毕的时候可以手动设置一个标志位(表明数据接完了),在其它地方轮询判断该标志位,然后再对缓冲区中的数据进行判断。
最好的办法就是DMA接收。