2019-07-14 18:23发布
ctwewer 发表于 2018-8-24 09:23 uart不应该关闭,假设接收缓冲区是:Rx_buf[100], for(i=0;i<100;i++)Rx_Buf=0; 这个谁都会清空,对吧?
最多设置5个标签!
感谢您的回复,
您说的我理解了,不过是这样,诸如您说的那个自己写的缓存我也有,我每次也都会清空。错误是发生在用指令从硬件把数据读到缓存时,数据就已经不对了。
HAL_UART_Receive_DMA(&huart1,pR,BUFFERSIZE);
我用的DMA,所以这句里的pR就是我指向缓存的指针。
#define BUFFERSIZE 80
uint32_t ReceiveBuff[BUFFERSIZE]; //接收缓冲匿
uint8_t *pR=(uint8_t *)&ReceiveBuff[0];
(这里的8位32位的原因是因为我用CRC32,所以就转了一下)
也就是说当数据到ReceiveBuff的时候数据就已经错了,我其实是有个疑问:是不是有个硬件缓存在UART端口,我看不见,它会接收垃圾信息和我这次的有用信息合并,然后当我读操作时,会一并读到缓存里,从而我看到的数据就错了?
一周热门 更多>