打印
[STM32]

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

[复制链接]
588|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
苍凉人生|  楼主 | 2016-6-20 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要控制一个数字舵机,再给它发送数据的时候需要同时接收发送的数据,硬件上是直接把接收发送端口连到一起的(用杜邦线),但在发送接收的过程中发现有时候接收到的和发送的不一样,目前还在纠结什么原因?有没有知道的,谢谢啦
附上部分程序:
发送函数中:
        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

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝