我自己写了个头文件spi.h
#ifndef _SPI_H
#define _SPI_H
//**************************
#define SPI_DI RC4
#define SPI_DO RC5
#define SPI_SCK RC3
#define SPI_CS RC2
//****************************
#define STA_BYTR 0X01
#define R_CONTROL 0X80
#define W_CONTROL 0X40
#define W_ENABLE 0X30
#define W_DISABLE 0X00
//*************************
unsigned char T_data;
//*****************************
void spi_init(void);
void write_enable(void);
void write_disable(void);
void spi_send_byte(unsigned char Data);
void spi_read(unsigned char R_Add, unsigned char *R_Data);
void spi_write(unsigned char W_Add, unsigned char *W_Data);
#endif
在我的spi.c文件里我没有再定义T_data,即没有给T_data赋值,而是直接在函数void spi_send_byte(unsigned char Data)应用
#include "spi.h"
void spi_init(void)
{
TRISC = 0X10;
SSPSTAT = 0X80;
SSPCON = 0X32;
INTCON = 0X00;
PIR1 = 0X00;
SPI_CS = 0;
}
/*********************************
写一个字节数据数据
***********************************/
void spi_send_byte(unsigned char Data)
{
SSPBUF = Data;
while(!SSPIF);
SSPIF = 0;
T_data = SSPBUF;
}
另有其他函数省略
这样的结果是在编译的时候出现
Error[000]:multiply defined symbol: _T_data
我想知道在头文件声明了的变量,在其.C的文件里一定要定义吗? |