TI中文支持网
TI专业的中文技术问题搜集分享网站

自定义头文件中的结构体变量总是赋值无效

自定义了一个头文件,里面包含一个结构体,

#ifndef Parameterdef
#define Parameterdef
#endif

//Global parameters and variables definition
struct SYSTEMPARAMS {

                                       double TBPRD;

                                      double SW_Freq;

                                       }

extern volatile struct SYSTEMPARAMS param;

然后在DSP2833x_GlobalVariableDef.c 中加入了全局变量声明语句,如下:

#ifdef __cplusplus
#pragma DATA_SECTION("paramFile")
#else
#pragma DATA_SECTION(param,"paramFile");
#endif
volatile struct SYSTEMPARAMS param;

之后再DSP2833x_Headers_nonBIOS.cmd中定义了结构体的地址,如下:

MEMORY中:

     I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
     SYSTEMPARAMS : origin = 0x007980, length = 0x000100 /* SYSTEMPARAMS register*/

     CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */

SECTION中:

     I2caRegsFile : > I2CA, PAGE = 1
     paramFile : > SYSTEMPARAMS, PAGE = 1
    /*** Code Security Module Register Structures ***/
    CsmPwlFile : > CSM_PWL, PAGE = 1

编译没有错误,但是在初始化过程中对TBPRD进行赋值,

param.TBPRD=1000;

但是观察变量param.TBPRD的值总是显示为0,请问问题出在哪儿呢?

Yanjun Tian:

回复 10#:

问题解决了,非常感谢!

自定义了一个头文件,里面包含一个结构体,

#ifndef Parameterdef
#define Parameterdef
#endif

//Global parameters and variables definition
struct SYSTEMPARAMS {

                                       double TBPRD;

                                      double SW_Freq;

                                       }

extern volatile struct SYSTEMPARAMS param;

然后在DSP2833x_GlobalVariableDef.c 中加入了全局变量声明语句,如下:

#ifdef __cplusplus
#pragma DATA_SECTION("paramFile")
#else
#pragma DATA_SECTION(param,"paramFile");
#endif
volatile struct SYSTEMPARAMS param;

之后再DSP2833x_Headers_nonBIOS.cmd中定义了结构体的地址,如下:

MEMORY中:

     I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
     SYSTEMPARAMS : origin = 0x007980, length = 0x000100 /* SYSTEMPARAMS register*/

     CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */

SECTION中:

     I2caRegsFile : > I2CA, PAGE = 1
     paramFile : > SYSTEMPARAMS, PAGE = 1
    /*** Code Security Module Register Structures ***/
    CsmPwlFile : > CSM_PWL, PAGE = 1

编译没有错误,但是在初始化过程中对TBPRD进行赋值,

param.TBPRD=1000;

但是观察变量param.TBPRD的值总是显示为0,请问问题出在哪儿呢?

10#:

回复 Yanjun Tian:

多谢反馈。

如果是上面我提到的原因,请确认答案并关闭帖子,要不也请分享问题的原因,谢谢!

自定义了一个头文件,里面包含一个结构体,

#ifndef Parameterdef
#define Parameterdef
#endif

//Global parameters and variables definition
struct SYSTEMPARAMS {

                                       double TBPRD;

                                      double SW_Freq;

                                       }

extern volatile struct SYSTEMPARAMS param;

然后在DSP2833x_GlobalVariableDef.c 中加入了全局变量声明语句,如下:

#ifdef __cplusplus
#pragma DATA_SECTION("paramFile")
#else
#pragma DATA_SECTION(param,"paramFile");
#endif
volatile struct SYSTEMPARAMS param;

之后再DSP2833x_Headers_nonBIOS.cmd中定义了结构体的地址,如下:

MEMORY中:

     I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
     SYSTEMPARAMS : origin = 0x007980, length = 0x000100 /* SYSTEMPARAMS register*/

     CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */

SECTION中:

     I2caRegsFile : > I2CA, PAGE = 1
     paramFile : > SYSTEMPARAMS, PAGE = 1
    /*** Code Security Module Register Structures ***/
    CsmPwlFile : > CSM_PWL, PAGE = 1

编译没有错误,但是在初始化过程中对TBPRD进行赋值,

param.TBPRD=1000;

但是观察变量param.TBPRD的值总是显示为0,请问问题出在哪儿呢?

Yanjun Tian:

回复 10#:

第一次发帖,规矩不熟,见谅。

自定义了一个头文件,里面包含一个结构体,

#ifndef Parameterdef
#define Parameterdef
#endif

//Global parameters and variables definition
struct SYSTEMPARAMS {

                                       double TBPRD;

                                      double SW_Freq;

                                       }

extern volatile struct SYSTEMPARAMS param;

然后在DSP2833x_GlobalVariableDef.c 中加入了全局变量声明语句,如下:

#ifdef __cplusplus
#pragma DATA_SECTION("paramFile")
#else
#pragma DATA_SECTION(param,"paramFile");
#endif
volatile struct SYSTEMPARAMS param;

之后再DSP2833x_Headers_nonBIOS.cmd中定义了结构体的地址,如下:

MEMORY中:

     I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
     SYSTEMPARAMS : origin = 0x007980, length = 0x000100 /* SYSTEMPARAMS register*/

     CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */

SECTION中:

     I2caRegsFile : > I2CA, PAGE = 1
     paramFile : > SYSTEMPARAMS, PAGE = 1
    /*** Code Security Module Register Structures ***/
    CsmPwlFile : > CSM_PWL, PAGE = 1

编译没有错误,但是在初始化过程中对TBPRD进行赋值,

param.TBPRD=1000;

但是观察变量param.TBPRD的值总是显示为0,请问问题出在哪儿呢?

10#:

回复 Yanjun Tian:

没关系,我们只是希望确认答案后可以方便大家参考。多谢支持。

赞(0)
未经允许不得转载:TI中文支持网 » 自定义头文件中的结构体变量总是赋值无效
分享到: 更多 (0)