OpenEdv-开源电子网

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

关于通过串口发送一个五位数的方法

[复制链接]

5

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2016-4-26
在线时间
18 小时
发表于 2020-10-19 13:52:49 | 显示全部楼层 |阅读模式
1金钱
各位大佬,求教我要通过串口发送一个小于65535的五位数,目前是把每一位数拆开来,分别放到了一个数组里,然后依次发送,但是这样的话,相当于一个数就占了5个字节
而一个小于65535的5位数,实际上只需要2个字节,有没有什么办法是可以通过2个字节就把这个5位数发出去的吗?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2020-10-19 14:03:43 | 显示全部楼层
你说了你的做法,但是没讲清楚需求。你也说了,小于65535,是否包含负数呢。就算0~65535,最简发送方式也就是高8位、低8位了
回复

使用道具 举报

5

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2016-4-26
在线时间
18 小时
 楼主| 发表于 2020-10-19 14:14:21 | 显示全部楼层
Cindre鞡 发表于 2020-10-19 14:03
你说了你的做法,但是没讲清楚需求。你也说了,小于65535,是否包含负数呢。就算0~65535,最简发送方式也就 ...

就是0-65535就行,我现在直接发,就只发了低8位出去,高8位不知道该怎么发
                a=65535;
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
                USART_SendData(USART1,a);
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
这样直接发,串口助手接收到的只有FF,怎么样才能FFFF呢
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2020-10-19 14:17:56 | 显示全部楼层
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1,a >> 8);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,a & 0x00FF);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
回复

使用道具 举报

2

主题

459

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4512
金钱
4512
注册时间
2018-5-14
在线时间
964 小时
发表于 2020-10-19 14:19:55 | 显示全部楼层
山里人 发表于 2020-10-19 14:14
就是0-65535就行,我现在直接发,就只发了低8位出去,高8位不知道该怎么发
                a=65535;
                while(USART_G ...

uint8_t HighByte,LowByte;
HighByte=(a>>8)&0xFF;
LowByte=(a>>0)&0xFF;

然后接收端拼接:
uint16_t a;
a=Receive();
a<<=8;
a|=Receive();
回复

使用道具 举报

5

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2016-4-26
在线时间
18 小时
 楼主| 发表于 2020-10-19 14:23:50 | 显示全部楼层
山里人 发表于 2020-10-19 14:14
就是0-65535就行,我现在直接发,就只发了低8位出去,高8位不知道该怎么发
                a=65535;
                while(USART_G ...

好像有点明白了,串口只能输出8位,然后把16位拆成高8,低8,应该就可以了吧。我去试试看
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-19 16:57:25 | 显示全部楼层
可以用BCD码试试
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 11:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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