OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3181|回复: 4

关于简单的串口发送字符串问题

[复制链接]

4

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2016-1-21
在线时间
21 小时
发表于 2016-4-21 18:53:53 | 显示全部楼层 |阅读模式
本帖最后由 土立方 于 2016-4-22 09:24 编辑

用的单片机型号是90C516RD+

我先定义了一个513字节的数组unsigned char xdata buf[513];


初始化全为a,最后一个字节为0
memset(buf, 'a', 512);
buf[512] = 0;

然后我把它发送到电脑串口上
uart_send_str(buf);

相关的函数:
void uart_send_byte(unsigned char byte)
{
    SBUF = byte;
    while(!TI);
    TI = 0;
}

void uart_send_str(unsigned char *s)
{
    while(*s)
    {
        uart_send_byte(*s);
        s++;
    }
}

但是串口软件里面收到了512个0x61之后一直收到0xFF不停了,是哪里的问题?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-4-21 19:41:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2016-1-21
在线时间
21 小时
 楼主| 发表于 2016-4-21 20:32:49 | 显示全部楼层
波特率和其他设置没问题的,接收到了512个0x61,就是a,但是之后一直在发送0xFF停不下来。
我把数组改为511,其他的相关数组长度依次递减一,就达到了想要的效果(接收到了511个'a'就停下来)。
应该是跟这个512有关系,但是我不想不出是什么原因。。。
回复 支持 反对

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-4-22 08:22:05 | 显示全部楼层

感觉题主的功力比我厉害多了
用指针完全的避开了溢出的问题(我想到的唯一答案,所以这题我不会)
居然让程序死在  while里面
你是不是用的系统,是不是系统的问题。

如果知道了问题是什么,说一下,我很好奇
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2016-1-21
在线时间
21 小时
 楼主| 发表于 2016-4-22 09:22:32 | 显示全部楼层
止天 发表于 2016-4-22 08:22
感觉题主的功力比我厉害多了
用指针完全的避开了溢出的问题(我想到的唯一答案,所以这题我不会)
...

过奖啦!我觉得C51里面还是尽量少用关于字符串的函数,像strcat之类的,字符串结尾很容易出错,最好还是自己写函数吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表