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.

[参考译文] MSP430FR6820:全局变量的多个声明

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/806078/msp430fr6820-multiple-declarations-of-global-variables

器件型号:MSP430FR6820

团队、

我们使用 MSP430FR6820、需要在 RAM 中的某些存储器位置创建全局变量、使其连续排列。

globalvar.h 的定义

#ifndef GLOBALVAR_H_
#define GLOBALVAR_H_

#pragma LOCATION (Var1ToSafe、0x1c51)
char Var1ToSafe;
#pragma LOCATION (Var2ToSafe、0x1c52)
int Var2ToSafe;#Varma
location (Var3ToSafe、0x1c54)
VartToSafe

;#pragma LO5c4 (VartToSafe、Vart45c);#pragma LO5c4 pragma LO5cSafe;#pragma LO5cSafe;#Vartof.pragma LO5c4 pr


如果我包含此 globalvar.h 一次、一切都是 O、但如果我包含此 globalvar.h 两次、则会出现错误:

说明重新定义了资源路径位置类型符号"Var1ToSafe":首先在"./adc2temp.obj"中定义;在"./main.obj"中重新定义符号"Var1ToSaf"重新定义:首先在"./adc2temp.obj"中定义;在"./main.c/TestLinkovani C/C++ problem 中重新定义 

请、您能提供如何解决此问题的建议吗?

(n´t globalvar.h 只是一个示例、我需要声明100个具有不同类型的变量、并且我不能使用结构或其他数据类型解决方案、我需要在 RAM 中的特定地址的行中包含变量)。

感谢您的反馈和帮助。
TI 客户

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

    您的.h 文件包含变量定义。 程序中应该只有一个(全局)变量的定义、通常在.c 文件中。

    相应的.h 文件应仅包含声明、类似于"extern char Var1ToSafe;"。

    尽管 CCS "cc"用户指南(SLAU132S) 5.12.21不明确地说、它的示例仅将 #pragma 位置应用于定义、因此它们只会出现在.c 文件中。 我希望链接器能够将其计算出来。

    [编辑:您是否考虑过使用#pragma SET_DATA_SECTION ()将变量组括起来、然后修改链接器文件以将该段放置在所需的位置? 这不会为每个变量设置精确的位置、但会将它们放置在所需的存储器区域中。 它将保存一些键入内容。]

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

    您对添加方括号变量组的想法应该可以解决我们的问题。

    非常感谢!