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.

[参考译文] CCS/MSP430G2744:Code Composer Studio中的数组#39;的声明和用法帮助

Guru**** 2535750 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/628360/ccs-msp430g2744-help-with-array-s-declaration-and-usage-in-code-composer-studio

部件号:MSP430G2744

工具/软件:Code Composer Studio

每个人都很好!!

我对Code Composer Studio中数组的声明和使用有疑问。

在我的代码中,我要做的是如下所示:

在我的头文件中:

const unsigned int Programma_1F[3];
#define SetPoint _TEMP_Vasca_1F Programma_1F[0]
#define SetPoint _TEMP_Cuore_1F Programma_1F[1]
#define tempo Lavoro_1F Programma_1F[2]

TEMP_TEMP_TEMP_Vasca_1F= 600;
SetPoint _TEMP_Cuore_1F= 580;=300

但遗憾的是,Code Composer向我显示了几个数组,例如:

#145类型为"int"的值不能用于初始化类型为"int [0]"的实体

#145类型为"int"的值不能用于初始化类型为"int [1]"的实体

#145类型为"int"的值不能用于初始化类型为"int [2]"的实体

#148声明与“const unsigned int Programma_1F[3]”不兼容  

#148声明与"int Programma_1F[1]"不兼容  

#150变量“Programma_1F”已初始化  


我需要将 SetPoint温度Vasca_1F, SetPoint温度Cuore_1F, Tempo Lavoro_1F 分别与6.005803亿 值固定,因为我必须在C函数中使用它们,就像在这种情况下:

在我的C函数中:

如果(Blanch_check != Blanch_check_F){
	开关(counter_prog){
	情况0:{
		SetPoint _TEMP_VASCA1=SetPoint _TEMP_Vasca_1F;
		TEMP_CUORE1=TEMP_Cuore_1F;
		Tempo _LAVORO1=SetPoint
		break 2F_TEMP_LAV3F_TEMP_LAV3F_LAVCO_TEMP_LAV3F_LASTE_LASTE_DE_LAV3F_LAV3F_LASTE_LAV3F_TEM_LASTE_LASTE_LASTE_LAF_LAF_LASTE_LAV3F_LASTE_LAF_DE_LAV3F_LAV3F_LAV3F_TEM_LAV3F_LASTE_LAV3F_TEM_LAV3F_LASTE_LASTE_LASTE_LAV3F_TEM_
	
		
		
		
		
	
		
		
		
		
	
	

我的代码有什么问题? 还有其他更好的方式来完成我的任务吗?

等待您的回答和建议(我非常感谢),

此致

Maria Angela

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

    您不能写入...

    array[0]=10; 

    .全球范围。  这样的赋值语句只能发生在函数中。

    Luigi Quaglia 说:
    是否有其他更好的方式来完成我的任务?

    你可以写这个...

    const unsigned int Programma_1F[3]={ 6.005803亿};
    #define SetPoint _TEMP_Vasca_1F Programma_1F[0]
    #define SetPoint _TEMP_Cuore_1F Programe_1F[1]
    #define Tempo Programpo_1F[2]
    
    /* SetPoint _TEMP_TEMP_Vasca_1F=600;*/*/* TEMP_1F=
    
    */ 

    谢谢,此致,

    -George

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

    您好,George!

    好的,我理解,我尝试了您向我建议的两种解决方案。

    但我还是有Code Composer的一些错误,我真的不知道什么是不正确的:(

    在我的项目中,我有头文件Definitioni_Flash.h:

    /************************************************************************************************
    					Definizioni_FLASH.h
    //*
    创建时间:08次2017年设置
    *作者:Maria Angela Cianci
    */
    
    #ifndef定义I_FLASH_H_
    #define definionI_FLASH_H_
    
    /**************************************************************************************
    *			在库里科的祖娜德拉纪念花(Zona della memoria flash),我默认
    为*********************************************************************************************************** //****************************************************************************************************************
    
    					*挂旗:「挂旗
    /
    #define	flag_SONDACUORE		0b00000000000000000001
    #define flag_ATTIVAZIONI_F	0x0000
    
    /******************************************************************************************************
    					*旗帜旗
    /
    #define flag_VISUALTEMP 0b0万00000010
    #define0.001万 #define flag_VISUALTIME 0b0万00000100
    #define0.01万 #define flag_VISUALIZAZIONI_F 0x0000
    
    #define Blanch_check_F	0x0000
    
    /************************************************************************************************************
    * 				PROGRAMMI ON I DEFAULT
    (默认)******************************************************************************************************************* /
    
    const unsigned int Programma_1F[3];
    #define	SetPoint _TEMP_Vasca_1F	Programma_1F[0]
    #define	SetPoint _TEMP_Cuore_1F	Programma_1F[1]
    #define Tempo Lavoro_1F 		Programma_1F[2]
    
    const unsigned int Programma_2F[3];
    #define	SetPoint _TEMP_Vasca_Programma_2F[0]	
    #define	SetPoint _TEMP_Cuore_Progr2F_2F[1]	
    #define Tempo Lavoro_2F 		Programma_2F[2]
    
    连接无符号int Programma_3F[3];
    #define	SetPoint _TEMP_Vasca_3F	Programma_3F[0]
    #define	SetPoint _TEMP_Cuore_3F	Progr3F[1]
    #define Tempo Lavoro_amma 	Programma_3F[2]
    
    #endif /* definionI_FLASH_H_*/
    

    ...并且我在其他一些.c文件(包括.h文件)中使用此头文件中的声明。

    我还有 一个Caricamento_Programmi.c,我在其中编写函数 carica_programmiDEFAULT  

     

    /************************************************************************************************
    *					护理课程
    /*
    创建时间:22 giugno 2017
    *作者:Maria Angela Cianci
    */
    #include <Definizioni_flash.h>
    #include <Definioni_Settingaggi.h>
    
    unsigned int ASCamma_1[];
    #define PROamma_TEMP_VtempA1		Programma_1[0]
    #define TEMP_CUORORSET_1[LAG_TEMP_SE1]; 		
    			
    
    
    		
    		
    			
    
    
    #define	SetPoint _TEMP_VASCA3	Programma_3[0]
    #define	SetPoint Temp_TEMP_CUORE3	Programma_3[1]
    #define temp_LAVORO3			Programma_3[2]
    
    unsigned char counter_prog=0;	//Inizializzo il valore del contatore dei programmi a 0。 Sarà da incrementare ogni volta che viene premuto il tasto programma, per visualizzarlo sul display.
    
    
    void carica_programmmiDEFAULT(){/*
    Funzione
    
    		sul permette il caricamento dei programmi con i valori di default*/temp_temp_Vasca_1f=600;//////dio 60.0 gulzura_settp_perchè modalità tempulzil_settpulzil=è già temp
    	
    	Tempo Lavoro_1F= 300;			//Sono 300 minuti,vale a dr 5 ore
    	SetPoint _TEMP_Vasca_2F= 585;
    	SetPoint _TEMP_Cuore_2F= 560;
    	Tempo Lavoro_SetPoint = 240;TEMP_2F_Vasca_3F=
    	620;
    	SetPoint _TEMP_Cuore_3F= 600;
    	Tempo Lavoro_3F=150;
    	
    	IF (Blanch_check != Blanch_check_F){
    	SWITCH(counter_prog){
    	情况0:{
    		Setpoint _TEMP_VASCA1=TEMP_Vasca_1F;
    		Setpoint _TEMP_CUORE1F_CUOR_1F;TEMP_STEM_LAF_LAV3F_LAVOR_LAV3F_TEMPE_LAST_LAV3F_TEMPE_LAST_LAV3F_TEMP_LASTE_LAV3F_TEMPE_LASTE_LAV3F_LASTE_LAV3F_TEMPE_TEMPE_LASTE_LASTE_LAF_LASTE_LAV3F_LASTE_LAV3F_TEMPE_TEMPE_LASTE_LAVASE_LAV3F_TEMPE_LASTE_LAF_LASTE_LAV3F_LASTE_LAV3F_TEMPE_
    		
    		
    	
    		
    		
    		
    		
    	
    		
    		
    		
    		
    	
    	
    

    Code Composer为每个作业提供了以下错误:

    错误#138-D:表达式必须是一个 可修改的lvalue,如下所示  

    SetPoint:TEMP_Vasca_1F=600;

    为什么?

    如果我还使用:

    const unsigned int Programma_1F[3]={ 6.005803亿 };正如您所建议的那样,我从代码编辑器中得到了以下错误:  

    错误#1.0056万:重新定义符号“Programma_1F”:首先在"./Caricamento_Programmi.obj"中定义;在"./Settingaggi_RAM_EEPROM_Flash.obj"中重新定义


    我真的不明白为什么如果代码背后的思考过程是正确的,我想。

    非常感谢您的帮助!

    再次感谢,

    此致,

    Maria Angela

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

    请阅读 此常见问题条目 (不是TI提供的)。  它非常适合您的情况。  现在,我将讨论您的一些错误,包括您因我而犯的错误(抱歉!)。

    Luigi Quaglia 说:
    const unsigned int programma_1F[3];

    这样的变量定义不能出现在头文件中,而只能出现在C文件中。  此外,它可能只在整个程序中出现一次。

    Luigi Quaglia 说:
    未签名int Programma_1[];

    这是一个变量声明。  它不为该变量保留任何内存。

    [报价用户="Luigi Quaglia"]

    如果我还使用:

    const unsigned int Programma_1F[3]={ 6.005803亿 };正如您所建议的那样,我从代码编辑器中得到了以下错误:  

    错误#1.0056万:重新定义符号“Programma_1F”:首先在"./Caricamento_Programmi.obj"中定义;在"./Settingaggi_RAM_EEPROM_Flash.obj"中重新定义

    [/引述]

    这是我的错。  我忘记了这一行出现在头文件中。  在头文件中,您写入...

    extern const unsigned int Programma_1F[3]; 

    在一个C文件中,您只能写我建议的行。  对此感到抱歉!

    谢谢,此致,

    -George

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

    你好,乔治!!

    感谢您的建议和解释,当然也感谢您的回答。

    你写的所有东西都能帮助我清理我的脑袋!

    最后,我有来自Code Composer的0个错误。 :)

    此致,

    Maria Angela