2352|0

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

keil求助!!!我是新手,各位大侠帮帮忙!! [复制链接]

我买了个射频收发模块,它自带的数字手册上有自己的CRC校验程序如下:
An example implementation of CRC calculation on a message is shown next
// Definitions for CRC constants
#define MSG_CRC_INIT(0xFFFF)
#define MSG_CCITT_CRC_POLY(0x1021)
// Message object structure for sending/receiving messages
typedef struct MsgObj
{
u8 dataLen;
u8 opCode;
u16 data[MSG_MAX_DATA_LENGTH];
u16 crc;
} MsgObj;
// This function updates a running CRC value
void CRC_calcCrc8(u16 *crc_calc, u8 ch)
{
u8 i, v, xor_flag;
// Align test bit with leftmost bit of the message byte.
v = 0x80;
for (i=0; i<8; i++)
{
if (crc_calc & 0x8000)
{
xor_flag = 1;
}
else
{
xor_flag = 0;
}
crc_calc = crc_calc <<1;
if (ch & v)
{
// Append next bit of msg to CRC if it a one. The zero bit placed there by the
shift above need not be changed if the next bit in msg is zero.
crc_calc= crc_calc + 1;
}
if (xor_flag)
{
crc_calc = crc_calc ^ MSG_CCITT_CRC_POLY;
}
// Align test bit with next bit of the message byte. v = v >> 1;
}
}
// This function calculates the CRC for an arbitrary message.
u16 CRC_calcCrcMsgObj(MsgObj *hMsg)
{
u16 crcReg, i;
// Initialize the CRC register
crcReg = MSG_CRC_INIT;
CRC_calcCrc8(&crcReg, MSG_CCITT_CRC_POLY, hMsg->dataLen);
CRC_calcCrc8(&crcReg, MSG_CCITT_CRC_POLY, hMsg->opCode);
for(i=0; idataLen; i++)
{
CRC_calcCrc8(&crcReg, MSG_CCITT_CRC_POLY, hMsg->data);
}
return(crcReg);
}
我用keil uvision3自己改了改上面的程序,没改完,编译时在“if (crc_calc & 0x8000)”一行出现了“error C193:'&':bad operand type”的错误,各位大侠帮忙分析分析!!
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表