当前位置:网站首页>这些年用Keil遇到的坑

这些年用Keil遇到的坑

2022-07-06 06:09:00 老白436196571

1、今天调程序,函数中数组inBuf_32始终无法赋值
这是3个数组的定义
abc.c
这样不行

uint32_t EEPROM_FLASH_USER_DATA[FLASH_TOTAL_SIZE]={
    0xFF};
uint32_t EEPROM_FLASH_REGCODE_DATA[FLASH_TOTAL_SIZE]={
    0xaa};

static unsigned short p_InBuf_32=0;
static uint32_t inBuf_32[100];

这样也不行:

static unsigned short p_InBuf_32=0;
uint32_t EEPROM_FLASH_USER_DATA[FLASH_TOTAL_SIZE]={
    0xFF};
uint32_t EEPROM_FLASH_REGCODE_DATA[FLASH_TOTAL_SIZE]={
    0xFF};

static uint32_t inBuf_32[100];

这样就可以:

uint32_t EEPROM_FLASH_USER_DATA[FLASH_TOTAL_SIZE]={
    0};//初始化为0
//uint32_t EEPROM_FLASH_USER_DATA[FLASH_TOTAL_SIZE];//不初始化
uint32_t EEPROM_FLASH_REGCODE_DATA[FLASH_TOTAL_SIZE]={
    0xaa};

static unsigned short p_InBuf_32=0;
static uint32_t inBuf_32[100];

.c文件中,定义的第一个数组,不能初始化?或者要初始化也必须是0?
经验:这类问题往前面的数组或指针上面找原因,前面可能指针越界等。

2、函数中static 变量值不能保存,改为全局变量后没问题,这个是偶尔出现,可能也与初始化有关,待回头再测试下。先mark下

原网站

版权声明
本文为[老白436196571]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43494116/article/details/124980907