OpenEdv-开源电子网

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

STM32串口接收USART_ReceiveData()的问题

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-18
在线时间
2 小时
发表于 2016-5-18 16:32:30 | 显示全部楼层 |阅读模式
1金钱
上位机给的一个API是这样的public byte[] CreateData(byte type, byte cmd, byte data);
作用:构建数据包
参数:type:类型位,cmd:命令位,data:数据位
返回值:返回5位byte格式数据包,包头包尾均为FF,无校验位
例程:
byte [] data= CreateData(0x01, 0x02, 0x03);
返回的data的值为:FF 01 02 03 FF;
请问怎么通过USART_ReceiveData();把这几个数据读取之后分别存在三个变量里面,即在下位机里定义三个变量 type,cmd,data,然后分别接收上位机的type,cmd,data;


感觉说的不是很清楚,我是想接收这些数据然后让不同的舵机或者电机转动,第一个type是代表舵机或者电机(01代表舵机,02代表电机),cmd代表几号舵机或者电机(因为不止一个舵机和电机),data代表舵机转动的角度或者电机转动的速度。请各位大神帮帮忙,指点一下  万分感谢!o(∩_∩)o

最佳答案

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

包头包尾最好不一样比如返回(FF 00 01 02 FE) char type,cmd,data; int i=0; unsigned char cal[7]; void senddata(unsigned char dat) { if(dat==255) { i=0; cal=dat; } else { i=i+1; cal=dat; if(i==4) { if(cal[0]==255&&cal[4]==254) type=cal[1]; cmd=cal[2]; data=cal[3]; } ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

56

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-12-7
在线时间
48 小时
发表于 2016-5-18 16:32:31 | 显示全部楼层
包头包尾最好不一样比如返回(FF 00 01 02 FE)
char type,cmd,data;
int i=0;
unsigned char  cal[7];
void senddata(unsigned char dat)
{
    if(dat==255)
        {
                i=0;
                cal[i]=dat;  
        }
        else
        {
                i=i+1;
                cal[i]=dat;
                if(i==4)
                {       
                       
                        if(cal[0]==255&&cal[4]==254)
                        type=cal[1];
                        cmd=cal[2];
                        data=cal[3];


                }
         }
         
}
void USART3_IRQHandler(void)
{
        unsigned char  ch;
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
        {        
           ch=USART_ReceiveData(USART3);
                 senddata(ch);
       
                               
        }
         
}
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-18
在线时间
2 小时
 楼主| 发表于 2016-5-18 16:36:54 | 显示全部楼层
顶一下,求各位大神帮忙看看  真的很感谢
回复

使用道具 举报

2

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2015-12-3
在线时间
71 小时
发表于 2016-5-18 17:12:19 | 显示全部楼层
785409063 发表于 2016-5-18 16:36
顶一下,求各位大神帮忙看看  真的很感谢

你把串口收到的数据,通过包头包尾,解析成一条完整的数据,存到一个数组,使用memcpy,从你解析完的数组里,拷贝到你定义的那三个变量里
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 05:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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