打印
[STM8]

串口发送数据问题

[复制链接]
1211|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2018-8-29 12:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用串口助手发送字符,然后在有串口一传到pc上,为何一个字符 时可以,同时发多个时就不行了了?
沙发
llia| | 2018-8-29 12:52 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
zhuww|  楼主 | 2018-8-29 12:54 | 只看该作者
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

使用特权

评论回复
地板
langgq| | 2018-8-29 12:56 | 只看该作者
建议先单独试试发送,然后再单独试试接收,都可靠了在试试收完之后发送

使用特权

评论回复
5
CUIHUANWEN| | 2018-8-29 15:49 | 只看该作者
帮着顶顶

使用特权

评论回复
6
wangzsa| | 2018-8-29 17:44 | 只看该作者
波特率合适吗

使用特权

评论回复
7
zhenykun| | 2018-8-29 17:48 | 只看该作者

试试采用低一些的波特率如9600或2400

使用特权

评论回复
8
wangzsa| | 2018-8-29 17:50 | 只看该作者

单个数据能正确收发的话,硬件没有问题,怀疑中断响应处理不够快,后面的数据把前面的冲掉了

使用特权

评论回复
9
wangzsa| | 2018-8-29 17:52 | 只看该作者
楼主不知道参考官方代码吗

使用特权

评论回复
10
pengf| | 2018-8-29 17:54 | 只看该作者
你试试发送12是不是也是返回12.

使用特权

评论回复
11
wangzsa| | 2018-8-29 17:56 | 只看该作者
如果发送一个数字是对的,那么就是你处理逻辑上错误的,。。1112会不会当成了一个数字。

使用特权

评论回复
12
huangchui| | 2018-8-29 17:58 | 只看该作者
可以构建一个接收缓冲数组,中断中仅负责接收缓冲,主程序中负责发送

使用特权

评论回复
13
zhenykun| | 2018-8-29 18:00 | 只看该作者
试试9600的波特率吧,一般都用这个

使用特权

评论回复
14
jlyuan| | 2018-8-29 18:04 | 只看该作者
中断程序收发,波特率改低点看看

使用特权

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

使用特权

评论回复
16
songqian17| | 2018-8-29 18:15 | 只看该作者
显然是程序编制问题,好好检查代码吧。

使用特权

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

使用特权

评论回复
18
songqian17| | 2018-8-29 18:18 | 只看该作者


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

使用特权

评论回复
19
songqian17| | 2018-8-29 18:20 | 只看该作者

不要在中断中发送数据,放到中断服务程序外面发送

使用特权

评论回复
20
shimx| | 2018-8-29 18:23 | 只看该作者
还是看st官方程序吧

使用特权

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

本版积分规则

893

主题

8252

帖子

1

粉丝