首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个全局变量数组中使用声明的全局变量,而不会在STM32 Cube中出现任何错误?

如何在另一个全局变量数组中使用声明的全局变量,而不会在STM32 Cube中出现任何错误?
EN

Stack Overflow用户
提问于 2020-07-29 08:26:43
回答 1查看 757关注 0票数 0

我正在为我开发的PCB开发固件。我使用的微控制器是STM32f401rct6。

我使用的是社会福利署的界面和Stlink的闪存程序。

我已经声明了一个常量全局变量(TOTAL_IC),但是当我试图在另一个全局变量数组(cell_asic,bms_icTOTAL_IC;)中再次使用varible时,它会抛出错误,但是如果在any函数中使用它,它就不是。但是我不想在某个特定的函数中使用它,因为这个变量(TOTAL_IC)在整个程序中都被使用。

如何删除此错误。我是初学者?

代码:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 09:02:20

具有静态存储持续时间的数组的维数需要是整数常量表达式(如果数组是用初始化器定义的,则可以省略)。带有const限定符的变量不算作常量。它是一个不能修改的变量。您需要使用实际的整数常量,例如整数、枚举常量或仅涉及整数常量的表达式作为数组维数。您可以使用扩展到其中之一的预处理宏。

例如:

代码语言:javascript
复制
#define N_IC 1

const uint8_t TOTAL_IC = N_IC;

cell_asic bms_ic[N_IC];

您可能根本不需要程序中的TOTAL_IC变量。您可能只需将其定义为宏:

代码语言:javascript
复制
#define TOTAL_IC 1

cell_asic bms_ic[TOTAL_IC];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63149428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档