智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6353|回复: 9
打印 上一主题 下一主题

[通讯类] K60单片机如何用串口中断服务函数接收数据包?

[复制链接]

30

主题

244

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
18914
QQ
威望
15249
贡献
3321
兑换币
568
注册时间
2014-9-30
在线时间
172 小时
跳转到指定楼层
1#
发表于 2015-8-8 08:35:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
K60单片机如何用串口中断服务函数接收数据包?也就是一次性接收一帧数据,我看了K60教程,好像每次只能接收一个字节啊,如果我用的器件给单片机发送数据,一次性发送一个数据包,有包头和数据,而且定时发送,请问我要怎么接收呢?请大神指导!!!
回复

使用道具 举报

2

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2510
威望
1257
贡献
831
兑换币
838
注册时间
2015-4-25
在线时间
211 小时
毕业学校
Destiny
2#
发表于 2015-8-8 09:24:38 | 只看该作者
:):):):):)
回复 支持 反对

使用道具 举报

10

主题

1514

帖子

0

精华

金牌会员

智能车,首选泰庆

Rank: 6Rank: 6

积分
1715

活跃会员奖章在线王奖章

QQ
威望
427
贡献
400
兑换币
497
注册时间
2014-11-4
在线时间
444 小时
3#
发表于 2015-8-8 10:35:33 | 只看该作者
一个字节一个字节的发丫
回复 支持 反对

使用道具 举报

30

主题

244

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
18914
QQ
威望
15249
贡献
3321
兑换币
568
注册时间
2014-9-30
在线时间
172 小时
4#
 楼主| 发表于 2015-8-8 16:54:54 | 只看该作者
回复 支持 反对

使用道具 举报

30

主题

244

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
18914
QQ
威望
15249
贡献
3321
兑换币
568
注册时间
2014-9-30
在线时间
172 小时
5#
 楼主| 发表于 2015-8-8 16:56:59 | 只看该作者
la9998372 发表于 2015-8-8 10:06
我帧头是0xaa 0xaa,帧尾是0x55 0x55,中间是三个字节的数据,这个程序就是专门负责解析数据包的

多谢大神,我仔细研究一下,感激不尽!
回复 支持 反对

使用道具 举报

30

主题

244

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
18914
QQ
威望
15249
贡献
3321
兑换币
568
注册时间
2014-9-30
在线时间
172 小时
6#
 楼主| 发表于 2015-8-8 16:57:17 | 只看该作者
泰庆电子 发表于 2015-8-8 10:35
一个字节一个字节的发丫

明白了,多谢
回复 支持 反对

使用道具 举报

14

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
644
威望
342
贡献
186
兑换币
203
注册时间
2015-1-11
在线时间
58 小时
毕业学校
保密
7#
发表于 2015-8-9 09:07:33 | 只看该作者
:):)
回复 支持 反对

使用道具 举报

30

主题

244

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
18914
QQ
威望
15249
贡献
3321
兑换币
568
注册时间
2014-9-30
在线时间
172 小时
8#
 楼主| 发表于 2015-8-9 09:11:31 | 只看该作者
la9998372 发表于 2015-8-8 22:11
串口中断就是每来一个字节就触发一次,这个程序就是判断这次接收到的数据是我一帧数据包里的第几个。另外 ...

问题解决了,多谢
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
337
威望
176
贡献
89
兑换币
106
注册时间
2015-12-10
在线时间
36 小时
毕业学校
电子科技大学
9#
发表于 2016-3-15 14:58:49 | 只看该作者
这是我看的学长的程序,前面为什么要赋值0xAA,如果说是帧头的话我看后面又没有帧尾,那我觉得意义也不大啊。不如直接发送数组就可以了!
data_to_send[_cnt++]=temp1[0]>>8; data_to_send[_cnt++]=temp1[0];  不太明白他爸数据右移八位是为了什么?

void Data_Send(void)
{
        uint8 _cnt=0;
        data_to_send[_cnt++]=;         
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0x02;
        data_to_send[_cnt++]=0;            
        data_to_send[_cnt++]=temp1[0]>>8;  
        data_to_send[_cnt++]=temp1[0];  
        data_to_send[_cnt++]=temp1[1]>>8;
        data_to_send[_cnt++]=temp1[1];
        data_to_send[_cnt++]=temp1[2]>>8;
        data_to_send[_cnt++]=temp1[2];
        data_to_send[_cnt++]=temp1[3]>>8;
        data_to_send[_cnt++]=temp1[3];
        data_to_send[_cnt++]=temp1[4]>>8;
        data_to_send[_cnt++]=temp1[4];
        data_to_send[_cnt++]=temp1[5]>>8;
        data_to_send[_cnt++]=temp1[5];
        data_to_send[_cnt++]=temp1[6]>>8;
        data_to_send[_cnt++]=temp1[6];
        data_to_send[_cnt++]=temp1[7]>>8;
        data_to_send[_cnt++]=temp1[7];
        data_to_send[_cnt++]=temp1[8]>>8;
        data_to_send[_cnt++]=temp1[8];

        data_to_send[3] = _cnt-4;
       
        uint8 sum = 0;
        for(uint8 i=0;i<_cnt;i++)
                sum += data_to_send[i];
        data_to_send[_cnt++] = sum;          //22个数据

        LPLD_UART_PutCharArr(UART3, data_to_send, _cnt);
}
回复 支持 反对

使用道具 举报

1

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
767
威望
387
贡献
224
兑换币
236
注册时间
2014-12-14
在线时间
78 小时
10#
发表于 2016-7-10 17:21:23 | 只看该作者
huanghuispan 发表于 2016-3-15 14:58
这是我看的学长的程序,前面为什么要赋值0xAA,如果说是帧头的话我看后面又没有帧尾,那我觉得意义也不大啊 ...

要的是16位的,但是只能8位8位(一个字节)的发,移8位后在和没有移的加起来,就是16位的数据了(一个字)

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 03:19 , Processed in 0.058802 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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