[应用相关] 串口发送数据问题

[复制链接]
1333|18
 楼主| Mattheww 发表于 2017-7-31 15:39 | 显示全部楼层 |阅读模式
我用串口助手发送字符,然后在有串口一传到pc上,为何一个字符 时可以,同时发多个时就不行了了?
代码如下:unsigned char buffer[];
void USART1_IRQHandler(void)
{
                int i=0;
            unsigned char temp_trx;
            if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
            {
                    
                        USART_ClearFlag(USART1,USART_IT_RXNE);
                        temp_trx=USART_ReceiveData(USART1);
                        buffer=temp_trx;
                        USART_SendData(USART1,temp_trx);
                        if(i==14)
                        {
                            i=0;
                           
                         }
                        else
                        i++;
                                
            }
        
}比如发送11,返回11,但是发送11 12,返回7F E2 .波特率为115200
Erichk 发表于 2017-7-31 16:03 | 显示全部楼层
建议先单独试试发送,然后再单独试试接收,都可靠了在试试收完之后发送
Thorald 发表于 2017-7-31 16:21 | 显示全部楼层
波特率合适吗
Bjorn 发表于 2017-7-31 16:34 | 显示全部楼层
试试采用低一些的波特率如9600或2400
Rollo 发表于 2017-7-31 16:44 | 显示全部楼层
单个数据能正确收发的话,硬件没有问题,怀疑中断响应处理不够快,后面的数据把前面的冲掉了
zhuomuniao110 发表于 2017-7-31 16:45 | 显示全部楼层
楼主不知道参考官方代码吗
zhuomuniao110 发表于 2017-7-31 16:46 | 显示全部楼层
你试试发送12是不是也是返回12.
zhuomuniao110 发表于 2017-7-31 16:46 | 显示全部楼层
如果发送一个数字是对的,那么就是你处理逻辑上错误的,。。1112会不会当成了一个数字。
Rangar 发表于 2017-7-31 17:00 | 显示全部楼层
可以构建一个接收缓冲数组,中断中仅负责接收缓冲,主程序中负责发送
Stannis 发表于 2017-7-31 17:10 | 显示全部楼层
试试9600的波特率吧,一般都用这个
mmuuss586 发表于 2017-7-31 17:26 | 显示全部楼层
中断程序收发,波特率改低点看看
Brand2 发表于 2017-7-31 18:21 | 显示全部楼层
跟波特率没啥关系,应该是代码的问题,至于说有啥问题,我也说不出,首先是代码不全,而且跟实际代码可能还不太相符
Soraka 发表于 2017-7-31 18:29 | 显示全部楼层
显然是程序编制问题,好好检查代码吧。
Garen2 发表于 2017-7-31 18:40 | 显示全部楼层
程序的结构有问题,一个一个处理没有条件限制是不能完成多字节接收的,多字节结束要有结束标致条件,比如时间或者特定字符,想清楚了再写程序。
Ryze 发表于 2017-7-31 18:50 | 显示全部楼层

USART_ClearFlag(USART1,USART_IT_RXNE);这句可能没有达到预期效果
你加一句 ,clearITpend的这句再看看
前功尽弃 发表于 2017-8-1 09:55 | 显示全部楼层
不要在中断中发送数据,放到中断服务程序外面发送
icecut 发表于 2017-8-1 10:08 | 显示全部楼层
还是看st官方程序吧
gujiamao12345 发表于 2017-8-1 10:17 | 显示全部楼层
buffer=temp_trx; ??
这句话没问题么??
qinlu123 发表于 2017-8-1 15:24 | 显示全部楼层
我也遇到过和楼主一样的问题,我觉得应该把发送函数从接收中断里拿出来。把收到的数据缓冲起来然后慢慢往外发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

500

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部