打印
[应用相关]

串口发送数据问题

[复制链接]
870|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

使用特权

评论回复
5
Rollo| | 2017-7-31 16:44 | 只看该作者
单个数据能正确收发的话,硬件没有问题,怀疑中断响应处理不够快,后面的数据把前面的冲掉了

使用特权

评论回复
6
zhuomuniao110| | 2017-7-31 16:45 | 只看该作者
楼主不知道参考官方代码吗

使用特权

评论回复
7
zhuomuniao110| | 2017-7-31 16:46 | 只看该作者
你试试发送12是不是也是返回12.

使用特权

评论回复
8
zhuomuniao110| | 2017-7-31 16:46 | 只看该作者
如果发送一个数字是对的,那么就是你处理逻辑上错误的,。。1112会不会当成了一个数字。

使用特权

评论回复
9
Rangar| | 2017-7-31 17:00 | 只看该作者
可以构建一个接收缓冲数组,中断中仅负责接收缓冲,主程序中负责发送

使用特权

评论回复
10
Stannis| | 2017-7-31 17:10 | 只看该作者
试试9600的波特率吧,一般都用这个

使用特权

评论回复
11
mmuuss586| | 2017-7-31 17:26 | 只看该作者
中断程序收发,波特率改低点看看

使用特权

评论回复
12
Brand2| | 2017-7-31 18:21 | 只看该作者
跟波特率没啥关系,应该是代码的问题,至于说有啥问题,我也说不出,首先是代码不全,而且跟实际代码可能还不太相符

使用特权

评论回复
13
Soraka| | 2017-7-31 18:29 | 只看该作者
显然是程序编制问题,好好检查代码吧。

使用特权

评论回复
14
Garen2| | 2017-7-31 18:40 | 只看该作者
程序的结构有问题,一个一个处理没有条件限制是不能完成多字节接收的,多字节结束要有结束标致条件,比如时间或者特定字符,想清楚了再写程序。

使用特权

评论回复
15
Ryze| | 2017-7-31 18:50 | 只看该作者

USART_ClearFlag(USART1,USART_IT_RXNE);这句可能没有达到预期效果
你加一句 ,clearITpend的这句再看看

使用特权

评论回复
16
前功尽弃| | 2017-8-1 09:55 | 只看该作者
不要在中断中发送数据,放到中断服务程序外面发送

使用特权

评论回复
17
icecut| | 2017-8-1 10:08 | 只看该作者
还是看st官方程序吧

使用特权

评论回复
18
gujiamao12345| | 2017-8-1 10:17 | 只看该作者
buffer=temp_trx; ??
这句话没问题么??

使用特权

评论回复
19
qinlu123| | 2017-8-1 15:24 | 只看该作者
我也遇到过和楼主一样的问题,我觉得应该把发送函数从接收中断里拿出来。把收到的数据缓冲起来然后慢慢往外发。

使用特权

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

本版积分规则

85

主题

500

帖子

0

粉丝