STM32 Cube IDE如何在另一个全局变量Array中使用声明的全局变量而不出错?
How to use a declared global variable in another global variable Array without any error in STM32 Cube IDE?
我正在为我开发的PCB开发固件。我使用的微控制器是STM32f401rct6。
我正在使用 SWD 接口和 Stlink 来刷入程序。
我已经声明了一个常量全局变量 (TOTAL_IC) 但是当我尝试在另一个全局变量数组中再次使用该变量时 (cell_asic bms_ic[TOTAL_IC ];) 它会抛出错误,但如果我在 any 函数中使用它,则不会。但我不想在某些特定函数中使用它,因为整个程序都使用了该变量 (TOTAL_IC)。
如何消除这个错误。我是初学者?
代码:
const uint8_t TOTAL_IC = 1; /* Global variable */
cell_asic bms_ic[TOTAL_IC]; /* this is where iam getting error */
LTC6811_init_cfg(TOTAL_IC, bms_ic);
for (uint8_t current_ic = 0; current_ic<TOTAL_IC; current_ic++)
{
LTC6811_set_cfgr(current_ic,,REFON,ADCOPT,gpioBits_a,dccBits_a, dctoBits, UV, OV);
}
LTC6811_reset_crc_count(TOTAL_IC,bms_ic);
LTC6811_init_reg_limits(TOTAL_IC,bms_ic);
具有静态存储持续时间的数组的维度需要是一个整数常量表达式(或者如果数组是用初始化程序定义的,则可以省略)。带有 const
限定符的变量不算作常量。它是一个无法修改的变量。您需要使用一个实际的整数常量,例如整数、枚举常量或仅涉及整数常量的表达式作为数组维度。您可以使用扩展为其中之一的预处理器宏。
例如:
#define N_IC 1
const uint8_t TOTAL_IC = N_IC;
cell_asic bms_ic[N_IC];
您的程序中可能根本不需要 TOTAL_IC
变量。您可以将其定义为宏:
#define TOTAL_IC 1
cell_asic bms_ic[TOTAL_IC];
我正在为我开发的PCB开发固件。我使用的微控制器是STM32f401rct6。
我正在使用 SWD 接口和 Stlink 来刷入程序。
我已经声明了一个常量全局变量 (TOTAL_IC) 但是当我尝试在另一个全局变量数组中再次使用该变量时 (cell_asic bms_ic[TOTAL_IC ];) 它会抛出错误,但如果我在 any 函数中使用它,则不会。但我不想在某些特定函数中使用它,因为整个程序都使用了该变量 (TOTAL_IC)。
如何消除这个错误。我是初学者?
代码:
const uint8_t TOTAL_IC = 1; /* Global variable */
cell_asic bms_ic[TOTAL_IC]; /* this is where iam getting error */
LTC6811_init_cfg(TOTAL_IC, bms_ic);
for (uint8_t current_ic = 0; current_ic<TOTAL_IC; current_ic++)
{
LTC6811_set_cfgr(current_ic,,REFON,ADCOPT,gpioBits_a,dccBits_a, dctoBits, UV, OV);
}
LTC6811_reset_crc_count(TOTAL_IC,bms_ic);
LTC6811_init_reg_limits(TOTAL_IC,bms_ic);
具有静态存储持续时间的数组的维度需要是一个整数常量表达式(或者如果数组是用初始化程序定义的,则可以省略)。带有 const
限定符的变量不算作常量。它是一个无法修改的变量。您需要使用一个实际的整数常量,例如整数、枚举常量或仅涉及整数常量的表达式作为数组维度。您可以使用扩展为其中之一的预处理器宏。
例如:
#define N_IC 1
const uint8_t TOTAL_IC = N_IC;
cell_asic bms_ic[N_IC];
您的程序中可能根本不需要 TOTAL_IC
变量。您可以将其定义为宏:
#define TOTAL_IC 1
cell_asic bms_ic[TOTAL_IC];