打印
[STM8]

同时发多个时

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

使用特权

评论回复
沙发
llia| | 2020-5-8 22:35 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
zhuww|  楼主 | 2020-5-8 22:38 | 只看该作者
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| | 2020-5-8 22:40 | 只看该作者
建议先单独试试发送,然后再单独试试接收,都可靠了在试试收完之后发送

使用特权

评论回复
5
wangzsa| | 2020-5-8 22:44 | 只看该作者
波特率合适吗

使用特权

评论回复
6
zhenykun| | 2020-5-8 22:46 | 只看该作者
试试采用低一些的波特率如9600或2400

使用特权

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

使用特权

评论回复
8
wangzsa| | 2020-5-8 22:51 | 只看该作者

楼主不知道参考官方代码吗

使用特权

评论回复
9
pengf| | 2020-5-8 22:55 | 只看该作者
你试试发送12是不是也是返回12.

使用特权

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

使用特权

评论回复
11
huangchui| | 2020-5-8 23:00 | 只看该作者

可以构建一个接收缓冲数组,中断中仅负责接收缓冲,主程序中负责发送

使用特权

评论回复
12
zhenykun| | 2020-5-8 23:03 | 只看该作者
试试9600的波特率吧,一般都用这个

使用特权

评论回复
13
jlyuan| | 2020-5-8 23:06 | 只看该作者
中断程序收发,波特率改低点看看

使用特权

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

使用特权

评论回复
15
songqian17| | 2020-5-8 23:11 | 只看该作者

显然是程序编制问题,好好检查代码吧。

使用特权

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

使用特权

评论回复
17
songqian17| | 2020-5-8 23:19 | 只看该作者

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

使用特权

评论回复
18
songqian17| | 2020-5-8 23:22 | 只看该作者
不要在中断中发送数据,放到中断服务程序外面发送

使用特权

评论回复
19
wenfen| | 2020-5-8 23:24 | 只看该作者
还是看st官方程序吧

使用特权

评论回复
20
jiaxw| | 2020-5-8 23:27 | 只看该作者

buffer=temp_trx; ??
这句话没问题么??

使用特权

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

本版积分规则

893

主题

8252

帖子

1

粉丝