OpenEdv-开源电子网

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

UART串口通信协议知道包头和数据长度怎么接收并存放在数组中

[复制链接]

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
发表于 2019-10-15 12:43:49 | 显示全部楼层 |阅读模式
19金钱

图.png

最佳答案

查看完整内容[请看2#楼]

1.串口接收到包头后开始接收下一帧数据。 2.接收到长度后,即可计算出之后所需要接收到的数据长度,之后将接收到的数据一个个放入数组即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-10-15 12:43:50 | 显示全部楼层
1.串口接收到包头后开始接收下一帧数据。
2.接收到长度后,即可计算出之后所需要接收到的数据长度,之后将接收到的数据一个个放入数组即可。
猪猪熊呢?
回复

使用道具 举报

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
 楼主| 发表于 2019-10-15 12:44:23 | 显示全部楼层
用的是HAL库
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-10-15 18:45:42 | 显示全部楼层
可以参考原子串口实验例程的串口中断程序,将接收到的数据存储在固定的数组,等接收完成后,再去对该数组进行处理
回复

使用道具 举报

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
 楼主| 发表于 2019-10-15 20:35:26 | 显示全部楼层
peng1554 发表于 2019-10-15 18:45
可以参考原子串口实验例程的串口中断程序,将接收到的数据存储在固定的数组,等接收完成后,再去对该数组进 ...

那这个协议有告诉我校验位吗,我看大部分都是需要用到校验位
回复

使用道具 举报

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
 楼主| 发表于 2019-10-15 20:36:52 | 显示全部楼层
还有请问校验位和结束位又是什么,跟原子的一样吗
回复

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2019-10-16 10:08:52 | 显示全部楼层
按照你的意思大概是这个样子,你自己修改修改吧
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE) != RESET) { // 接收中断
               
        data = USART_ReceiveData(DEBUG_USARTx);

        if (0xFF == data && 0 == USART_RX_NUMBER) { // USART_RX_NUMBER,接受的数据的长度

            receiveInstruction = 1;
        }
        if (0 != receiveInstruction) {

                USART_RX_BUF[USART_RX_NUMBER] = data;
                USART_RX_NUMBER++;
                if(0xXX == USART_RX_NUMBER) { // 自定义接收0xXX长度的数据

                    USART_RX_NUMBER= 0;
                    receiveInstruction = 0;
                    dataAnalysis(USART_RX_BUF); // 处理接收到的数据,USART_RX_BUF[],数组缓冲区
                }       
        }       
}

世界和平
回复

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2019-10-16 10:11:28 | 显示全部楼层
礼拜天真好 发表于 2019-10-16 10:08
按照你的意思大概是这个样子,你自己修改修改吧
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE) != RE ...

没看你的协议 只看了帖子的标题
世界和平
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-10-16 10:49:39 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 03:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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