首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32串口接收和发送的数据不一样问题

STM32串口接收和发送的数据不一样问题

我需要控制一个数字舵机,再给它发送数据的时候需要同时接收发送的数据,硬件上是直接把接收发送端口连到一起的(用杜邦线),但在发送接收的过程中发现有时候接收到的和发送的不一样,目前还在纠结什么原因?有没有知道的,谢谢啦
附上部分程序:
发送函数中:
        for(bCount = 0; bCount < bPacketLength; bCount++)
        {
                TxRS485(TxBuffer[bCount]);//把TxBuffer[]中数据送给USART1,顺便送到RxBuffer[]存起来
        }
CLEAR_BUFFER;//将数组指针清零方便下次存取  这个宏定义:#define CLEAR_BUFFER        RxBufferReadPointer = RxBufferWritePointer=0
接收中断中:
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//读取接收完成中断标志位(接收寄存器满)
        {
                TranslatedData = USART_ReceiveData(USART1);
                while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == 1)//软件读DR中的数据后自动清0  USART_FLAG_RXNE
                 {               
                        uDelay(10);
                        if(ulCounter++ > RS485_TIMEOUT)
                        {
                                bTimeout = 1;
                                break;
                        }
                }
                RxInterruptBuffer[(RxBufferWritePointer)] = TranslatedData;
                RxBufferWritePointer++;
中间那个是个对接收到的数据(字节)所用时间判断语句,测试发现根本没进入。这是另一个问题。

最后的结果就是接收发送有些数据不对
贴出一段接收发送的数据:

TxBuffer.1=255
RxInterruptBuffer.1=255
TxBuffer.2=1
RxInterruptBuffer.2=255
TxBuffer.3=5
RxInterruptBuffer.3=1
TxBuffer.4=3
RxInterruptBuffer.4=5
TxBuffer.5=8
RxInterruptBuffer.5=3
TxBuffer.6=255
RxInterruptBuffer.6=8
TxBuffer.7=3
RxInterruptBuffer.7=255
TxBuffer.8=236
RxInterruptBuffer.8=3
TxBuffer.0=255
RxInterruptBuffer.0=236
返回列表