OpenEdv-开源电子网

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

设置简单的串口通讯协议实现 数据传输

[复制链接]

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-3-6
在线时间
26 小时
发表于 2020-3-20 12:15:55 | 显示全部楼层 |阅读模式
1金钱
我想定义一个 0X78 +8位数字+8位数字+8位数字+8位数字+17位数字+0x72 这样结构的协议
单片机接受上位机传过来的数值  并将收到的数值又传回给单片机

在单片机代码中断块中模仿写了下面一段代码  但在上位机中接受的数据和发过去的数据不一致

想问一下这段代码中是不是没有对数字的接受 只有对帧头帧尾做了处理

        if(USART_GetITStatus(PC_USART,USART_IT_RXNE) != RESET)//½óêÕÖD¶Ï       
                        {
                                USART_ClearITPendingBit(PC_USART,USART_IT_RXNE);//Çå3yêy¾YÖD¶Ï
                                Res= USART_ReceiveData(PC_USART);//¶á衽óêÕμ½μÄêy¾Y               
                        }                               
                                switch(Read_status)
                                        {
                                                case 0x00:
                                                if(Res == 0x78)
                                                        {
                                                                        Read_Head = 0x00;
                                                                        RecData[Read_Head] = Res;
                                                                        Read_Head++;
                                                                        Read_Time = 20;
                                                                        Read_status = 0x01;
                                                        }
                                        else
                                                {       
                                               
                                                       
                                                }
                                break;
                                        case 0x01:
                                                        RecData[Read_Head] = Res;
                                                        Read_Head++;
                                                        if(Read_Head >= 3)
                                                        {
                                                                if(RecData[Read_Head-1] == 0x72)
                                                                {
                                                                        Read_Tail = Read_Head;
                                                                        Read_Head = 0;
                                                                        Read_Time = 0;
                                                                        Read_status = 0;
                                                                        Read_ok = 1;
                                                                }
                                                }
                                                break;
                                        default:
                                        break;       
        }               



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

使用道具 举报

11

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2015-3-3
在线时间
114 小时
发表于 2020-3-20 12:58:02 | 显示全部楼层
回复

使用道具 举报

0

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
金钱
267
注册时间
2018-7-6
在线时间
133 小时
发表于 2020-3-20 15:13:18 | 显示全部楼层
你说的8位数字 17位数字是什么鬼??这个“位”到底指的是“字节” 还是“数据位”?
回复

使用道具 举报

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-3-6
在线时间
26 小时
 楼主| 发表于 2020-3-20 17:11:32 | 显示全部楼层
专注嵌入式 发表于 2020-3-20 15:13
你说的8位数字 17位数字是什么鬼??这个“位”到底指的是“字节” 还是“数据位”?

例如 AF123456
应该是 8bit 1字节
回复

使用道具 举报

0

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
金钱
267
注册时间
2018-7-6
在线时间
133 小时
发表于 2020-3-21 08:31:13 | 显示全部楼层
城南一偶 发表于 2020-3-20 17:11
例如 AF123456
应该是 8bit 1字节

如果你说AF123456这个东西是1个字节,我真帮不了你,建议把C语言基础知识学学,这个东西你要说是四个字节我还可以接受
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2020-3-23 09:05:29 | 显示全部楼层
先在电脑上用串口助手和单片机通信调试看看,确定没问题了在用单片机和上位机调试。
回复

使用道具 举报

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-3-6
在线时间
26 小时
 楼主| 发表于 2020-3-23 09:22:15 | 显示全部楼层
HXYDJ 发表于 2020-3-23 09:05
先在电脑上用串口助手和单片机通信调试看看,确定没问题了在用单片机和上位机调试。

好的 我先调试看看
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 05:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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