我想实现读取SD卡bin文件到LCD,于是定义了一个buff【320*240】,也就是75Kb,我的板子103ZET6内存64Kb,把数组定义才全局或者局部产生了以下问题:
1:、buff定义在全局时编译没有问题,打印元素地址就会报错如图
猜想求证:buff定义在全局里,存在ram里,因为大于ram内存64Kb,所以系统才报错?那为何编译不打印地址时候时,不报错?
代码:
#include "bsp_usart.h"
#include "stdio.h"
u8 buff[76800] = {0,1,2};
int main(void)
{
LED_Config();
Delay_Config();
USART_Config();
printf("buff[] = %d\r\n",sizeof(buff));
// printf("地址buff[0] = %p\r\n",(&buff[0]));
printf("地址buff[1] = %p\r\n",(&buff[1]));
// printf("地址buff[2] = %p\r\n",(&buff[2]));
while(1)
{ //灯
PBout(1) = 1;
Delay_ms(500);
PBout(1) = 0;
Delay_ms(500);
}
}
2、我把buff定义才main内部,编译没有问题,运行时候为什么代码会卡在定义buff那行过不去?
代码:#include "bsp_usart.h"
#include "stdio.h"
int main(void)
{
u8 buff[76800] = {0,1,2};
LED_Config();
Delay_Config();
USART_Config();
printf("buff[] = %d\r\n",sizeof(buff));
printf("地址buff[0] = %p\r\n",(&buff[0]));
printf("地址buff[1] = %p\r\n",(&buff[1]));
printf("地址buff[2] = %p\r\n",(&buff[2]));
while(1)
{ //灯
PBout(1) = 1;
Delay_ms(500);
PBout(1) = 0;
Delay_ms(500);
}
}
诚心请教,谢谢啦!