This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2422:函数调用错误?

Guru**** 2382630 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/951555/msp430fr2422-function-call-error

器件型号:MSP430FR2422

我正在调用位于第二个文件中的 main 中的函数。  main 中的函数调用为:

CONFIGRTC (1800); 

funct.c 中的函数定义为:

void configRTC (unsigned int s)
{
unsigned int k、div = 0;
如果(s < 2)
DIV = DIVB[0];
如果(s >= 2048)则为其他值
div = Diva[3];
否则{
对于(k = 0;k < 3;k++){
如果(s >(2 * Diva[k])
div =(k + 1);
}
}
RTCMOD =(int)((float)(32768 / Diva[div])* s)- 1;
RTCCTL = RTCSS_XT1CLK | RTCSR |(div + 4)<< 8;
RTCCTL &=~RTCIFG;
RTCCTL |= RTCIE;
}

在 funct.h 中、我定义 Diva 和 divB:

unsigned int Diva[4]={16、64、256、1024};
unsigned int divB[4]={1、10、100、1000};

当我转到编译主程序时、我会遇到以下错误:

重新定义#10056符号"DIVA":首先在"./funct.obj"中定义;在"./main.obj"
中重新定义#10056符号"DIVB":首先在"./funct.obj"中定义;在"./main.obj"中重新定义 

我不明白 main 为什么要重新定义这些函数、因为它们仅是函数的局部变量、并且不存在于 main 中。  我已经尝试在 main 中放置 extern、但没有结果?  funct.h 同时包含在 main 和 funct.c 中  我可以在没有错误的情况下构建 funct.c、这样我就知道我的问题在 main 的某个位置??

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我假设 funct.h 是包含在两个文件中的头文件吗?

    您正在定义两个 Diva 和 divB 变量。 您希望在其中一个文件中定义、并且标头应仅包含声明:

    extern Diva[];

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Keith……他做到了

    我的错误...出于某种原因、我一直希望将定义放置在头文件中、将 extern 放置在源代码中...

    Steve