(背景:主控芯片为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)的数组的值会被赋乱值,建议使用数组前对整个数组进行清零。
(希望有懂的大佬帮忙解答......)