重复符号" buf_position"在C语言代码中

时间:2014-08-11 14:37:48

标签: c microcontroller

在这个程序中,我收到错误,即复制符号" _buf_position"在C .. \ async.obj 我已将buf_position声明为全局变量我不知道此代码有什么问题,有人可以看看。

// async.h文件

extern uint8_t buffer[10];
extern uint32_t buf_position = 0;
extern uint8_t local_buff[10];
extern uint32_t retVal; 

// async.c文件

#include "async.h"
void Transmit_Data(void)
{ 
.............
...........
}

void Excep_SCI0_RXI0(void)//This is a recive interrupt,when some data is available on serialport
{

  buffer[buf_position++]= SCI0.RDR;
}

// main.c

#include "async.h"

void main(void)
{
    while(buffer[buf_position-1]=='\r')
    {
        memcpy(local_buff,buffer,buf_position-1);
        Display_LCD(LCD_LINE1, local_buff);
        Transmit_Data(); 
        buf_position = 0;
        //memset(buffer,0,sizeof(buffer));
    }
}

1 个答案:

答案 0 :(得分:5)

您在包含buf_position的每个文件中定义async.h。删除async.h中的初始化:

extern uint32_t buf_position;

现在你只是宣布它。

async.c中,添加初始化:

#include "async.h"

uint32_t buf_position = 0;
uint8_t buffer[10];
uint8_t local_buff[10];
uint32_t retVal;