中级会员
- 积分
- 359
- 威望
- 205
- 贡献
- 98
- 兑换币
- 118
- 注册时间
- 2013-6-13
- 在线时间
- 28 小时
- 毕业学校
- 山东理工大学
|
3#
楼主 |
发表于 2013-8-27 18:43:45
|
只看该作者
rubick 发表于 2013-8-27 17:10
头文件用来声明,暴露接口
源文件用来定义,隐藏实现。
你的问题能不能说具体点?
好的 我参考的山大的直立车程序 自己加无线检测波形 我定义了一个Wireless T.h 一个Wireless T.c 在中断服务程序里调用 用的上位机是serial_digital_scope 调试时老是出现错误1Incompatible type to previous declaration 2missing ;
1#ifndef Wireless T_H //if no define
#define Wireless T_h //define 即如果没有定义的话,则定义。。。。(防止其他函数多次调用此头文件时而重复定义)
//#include "Include_def.h"
/*--------------- I N C L U D E S ------------------------------------*/
extern void Dly_ms(unsigned int ms);
extern void uart_putchar ( unsigned char c);
extern void uart_getchar(void);
extern void uart_putstr(char ch[]) ;
extern void CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT);
extern void OutPut_Data(void) ;
extern float OutData[4] ;
#endif //结束定义,配合#ifndef使用
2#include "Include_def.h"
#include "derivative.h" /* derivative-specific definitions */
int8u_t celve = 0;
float OutData[4] = { 0 };
////////////////////////////////////////////////////////////////////////////////
void Dly_ms(int16u_t ms)
{
int16u_t i,j;
for(i=0;i<ms;i++)
for(j=0;j<20000;j++);
}
void uart_putchar ( int8u_t c)
{
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
SCI0DRL=c;
}
int8u_t uart_getchar(void)
{
//printf("uart_getchar\n");
//int8u_t res=0;
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
return (SCI0DRL);
}
void uart_putstr(int8s_t ch[])
{
int8u_t ptr=0;
while(ch[ptr]){
uart_putchar((int8u_t)ch[ptr++]);
}
}
//********************************************************************
int16su_t CRC_CHECK(int8u_t *Buf, int8u_t CRC_CNT)
{
int16su_t CRC_Temp;
int8u_t i,j;
CRC_Temp = 0xffff;
for (i=0;i<CRC_CNT; i++){
CRC_Temp ^= Buf;
for (j=0;j<8;j++) {
if (CRC_Temp & 0x01)
CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
else
CRC_Temp = CRC_Temp >> 1;
}
}
return(CRC_Temp);
}
//**********************************************************
void OutPut_Data(void)
{
int16s_t temp[4] = {0};
int16u_t temp1[4] = {0};
int8u_t databuf[10] = {0};
int8u_t i;
int16su_t CRC16 = 0;
for(i=0;i<4;i++)
{
temp = (int16s_t)OutData;
temp1 = (int16u_t)temp;
}
for(i=0;i<4;i++)
{
databuf[i*2] = (int8u_t)(temp1%256);
databuf[i*2+1] = (int8u_t)(temp1/256);
}
CRC16 = CRC_CHECK(databuf,8);
databuf[8] = CRC16%256;
databuf[9] = CRC16/256;
for(i=0;i<10;i++)
uart_putchar(databuf);
}
经常提示这个有错误1和2
int8u_t uart_getchar(void)
{
//printf("uart_getchar\n");
//int8u_t res=0;
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
return (SCI0DRL);
}
|
|