问题记录:C语言初始化为0的数组被赋乱值

文章讨论了在STM32H750主控芯片中,使用__attribute__((at))定义的数组(如CurLEDColor和LEDbuffer)在程序运行初期被赋予乱码的问题。尽管正常数组CurLEDColor保持0值,异常数组LEDbuffer在某些内存区域(如0x30000000和0x20000000)初始化后变为乱码,作者寻求解答如何确保初始化为0的数组始终清零。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 (背景:主控芯片为STM32H750)

1.初始化为0的2个数组

uint8_t CurLEDColor[LED_NUMBER]={0};                                   

uint16_t LEDbuffer[LED_BUFFER_SIZE] __attribute__((at(0x30000000))) = {0};

分别记为正常数组CurLEDColor 和 异常数组LEDbuffer;

2.程序开始运行时两个数组初值都为0;(HAL_Init()是main函数里的第一个函数)

3.执行HAL_Init();——>HAL_MspInit();——>__HAL_RCC_TIM3_CLK_ENABLE();后正常数组CurLEDColor的值保持为0不变,但是异常数组LEDbuffer的值被赋乱值;

是执行到这一步被赋乱值的......

4.将异常数组LEDbuffer的定义去掉__attribute__关键字由

        uint16_t LEDbuffer[LED_BUFFER_SIZE] __attribute__((at(0x30000000))) = {0};

        改为:

        uint16_t LEDbuffer[LED_BUFFER_SIZE]  = {0};

异常数组LEDbuffer的值保持为0不变;

5.将__attribute__((at(0x30000000))) 改为 __attribute__((at(0x20000000)))换一个RAM区,依然存在被赋值乱码的情况

总结:不清楚为什么使用__attribute__定义的(初始化为0)的数组的值会被赋乱值,建议使用数组前对整个数组进行清零。

(希望有懂的大佬帮忙解答......)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值