野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20839|回复: 7

CRC校验C程序移植程序报错

[复制链接]
发表于 2014-5-14 10:40:45 | 显示全部楼层 |阅读模式
用的是串口中断收发那个程序,自己找了一个VC++6.0 环境下的程序,运行没问题可是移植过来时就会报错
..\..\User\main.c(40): error: #32: expression must have arithmetic type
..\..\User\main.c(41): error: #29: expected an expression
我的思路是把串口调试助手发的那个数据处理之后,再把处理结果发到串口上。

这个是需要移植的程序,移植到火哥的串口中断程序
#include <stdio.h>
#define COUNT 6
unsigned int CRC_check(unsigned char *fp_CRC,unsigned char count)
{
unsigned int CRC=0XFFFF;
unsigned char CRC_count;
for(CRC_count=0;CRC_count<count;CRC_count++)
{
int i;
CRC=CRC^*(fp_CRC+CRC_count);
for(i=0;i<8;i++)
{
if(CRC&1)
{
CRC>>=1;
CRC^=0XA001;
}
else CRC>>=1;
}
}
return CRC;
}
int main(void)
{
unsigned char CRC_DATA[COUNT];
unsigned int i;
printf("input the CRC_DATA[n]:\n");
for(i=0;i<COUNT;i++)
scanf("%x",&CRC_DATA[i]);
for(i=0;i<COUNT;i++)
printf("\n%-2x%8d",CRC_DATA[i],i);
printf("\n%4x",CRC_check(CRC_DATA,COUNT));
return 0;
}
回复

使用道具 举报

发表于 2014-5-14 10:44:55 | 显示全部楼层
..\..\User\main.c(40): error: #32: expression must have arithmetic type
..\..\User\main.c(41): error: #29: expected an expression

提示里的这两个具体是哪个句子啊?在它附近找找看语法问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 10:47:39 | 显示全部楼层
冷千秋 发表于 2014-5-14 10:44
..\..\User\main.c(40): error: #32: expression must have arithmetic type
..\..\User\main.c(41): erro ...

CRC>>=1;
CRC^=0XA001;

这两句,总共有17个错误,是一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 10:50:32 | 显示全部楼层
冷千秋 发表于 2014-5-14 10:44
..\..\User\main.c(40): error: #32: expression must have arithmetic type
..\..\User\main.c(41): erro ...

而且我这个程序我是在vc++6.0上运行过了 没问题才移植的,结果一大堆错误,不知道问题出在哪里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 10:52:22 | 显示全部楼层
这个是所有的错误。。。
compiling main.c...
..\..\User\main.c(30): error:  #18: expected a ")"
..\..\User\main.c(30): error:  #79: expected a type specifier
..\..\User\main.c(30): error:  #145: function "CRC_TypeDef" may not be initialized
..\..\User\main.c(35): error:  #29: expected an expression
..\..\User\main.c(35): error:  #32: expression must have arithmetic type
..\..\User\main.c(35): error:  #29: expected an expression
..\..\User\main.c(35): error:  #32: expression must have arithmetic type
..\..\User\main.c(38): error:  #29: expected an expression
..\..\User\main.c(38): error:  #32: expression must have arithmetic type
..\..\User\main.c(40): error:  #29: expected an expression
..\..\User\main.c(40): error:  #32: expression must have arithmetic type
..\..\User\main.c(41): error:  #29: expected an expression
..\..\User\main.c(41): error:  #32: expression must have arithmetic type
..\..\User\main.c(43): error:  #29: expected an expression
..\..\User\main.c(43): error:  #32: expression must have arithmetic type
..\..\User\main.c(46): error:  #29: expected an expression
..\..\User\main.c(46): error:  #32: expression must have arithmetic type
..\..\User\main.c - 17 Error(s), 0 Warning(s).
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 11:07:22 | 显示全部楼层
我自己看了下错误只要出现CRC 好像都报错了是不是  unsigned int CRC=0XFFFF;这句不对
回复 支持 反对

使用道具 举报

发表于 2014-5-14 11:11:24 | 显示全部楼层
王牌菜鸟 发表于 2014-5-14 11:07
我自己看了下错误只要出现CRC 好像都报错了是不是  unsigned int CRC=0XFFFF;这句不对

CRC在STM32的头文件把它作了宏定义,给变量替换成另一个名试试看

ST库文件对CRC的定义
#define CRC                 ((CRC_TypeDef *) CRC_BASE)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 11:13:22 | 显示全部楼层
flyleaf 发表于 2014-5-14 11:11
CRC在STM32的头文件把它作了宏定义,给变量替换成另一个名试试看

ST库文件对CRC的定义

试了一下好了,非常感谢,困扰了我好久。多谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 04:23 , Processed in 0.029676 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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