在线时间3 小时
UID8231
ST金币0
蝴蝶豆0
注册时间2007-6-26
新手上路
- 最后登录
- 2020-4-30
|
楼主 |
发表于 2014-4-21 08:27:43
|
显示全部楼层
a0a.1 0b0c
RE:【STM32F429心得\疑问】利用STM32F429实现抄表功能
1、利用串口中断接收645-2007标准的抄表命令
{
static bit flag682,flag681,flaglen,flagdata,flagchk,flagover;
static unsigned char a,control,len,flagstatus,ptrint;
unsigned char tempint,i,sum;
frame=0;
tempint=SBUF;
if(tempint==0x68) //判断是否接收到帧头
{
if(!flag681) //是
{
buf[ptrint]=tempint;
flagstatus=1; //特征位
ptrint++;
}
}
if(flag681 && (!flag682) )//不是,判断是否接收到第2个68
{
buf[ptrint]=tempint;
if((ptrint==7) && (tempint==0x68)){flagstatus=2;a=0;}
ptrint++;
}
if(flag681 && flag682 && !flaglen ) //接收第2个68后的两个字符即控制码和长度
{
buf[ptrint]=tempint;
ptrint++;
if(ptrint==10){flagstatus=3;control=buf[ptrint-2];len=buf[ptrint-1];a=0;}
}
if(flag681 && flag682 && flaglen && !flagdata)//接收数据区
{
buf[ptrint]=tempint-0x33;
ptrint++;
a++;
if(a==len){flagstatus=4;a=0;}
}
if(flag681 && flag682 && flaglen && flagdata && !flagchk)//接收检验
{
buf[ptrint]=tempint;
if(ptrint==len+10)
{
sum=0;
for(i=0;i |
|