|
大家好,读写SD卡时,能正确读写,可是LCD却不能正常显示,怀疑可能是堆栈溢出。先上源程序吧。
/*SD卡读写测试*/
#include"../wav_player/fatfs/diskio.h"
#include"../wav_player/TFT/TFT018.h"
#include<stdio.h>
int main(void)
{
BYTE i,src[512],tar[512];
BacklightOn(); //点亮LCD背光灯
LCD_Init(); //LCD初始化
LCD_Clear_Screen(Blue); //清屏,以蓝色为背景
LCD_PutString(0,0,"LCD Ok",Yellow,Blue); //输出LCD OK
//while(1); //测试点1
for(i=0;i<40;i++) src=48+i; //向src数组填入数据
LCD_PutString(0,16,src,Yellow,Blue); //将src中的内容输出到LCD屏 背景蓝色,字体黄色
//while(1); //测试点2
i=disk_initialize(0); //SD卡初始化
if(i==0) LCD_PutString(80,0,"SD OK",Yellow,Blue); //返回0,初始化成功,输出 SD OK
else LCD_PutString(80,0,"SD NO",Yellow,Blue); //非0,初始化失败,输出 SD
//while(1); //测试点3
i=disk_write(0,src,8,1); //将src中的内容写入SD卡第8扇区
if(i==0) LCD_PutString(0,48,"WT OK",Yellow,Blue); //返回0,写入成功 ,输出WT OK
else LCD_PutString(0,48,"WT NO",Yellow,Blue); //非0,写入失败,输出WT NO
//while(1); //测试点4
i=disk_read(0,tar,8,1); //将刚才写入第8扇区的src的内容读出到tar数组 问题出在这一步
if(i==0) LCD_PutString(80,48,"RT OK",Yellow,Blue); //返回0,读出成功,输出RT OK
else LCD_PutString(80,48,"RT NO",Yellow,Blue); //非0,读出失败,输出RT NO
//while(1); //测试点5
LCD_PutString(0,64,tar,Cyan,Blue); //将读出的数据输出到LCD屏
while(1);
};
运行之后,LCD屏是空白的,但是如果不动数组tar,则这个程序是正常的。
经过我自己的测试,在测试点4是正常,到测试点5就出现LCD空白。
如果将上面程序中的所有tar 改成 src,则程序运行正常,SD卡读写正常。
所以我怀疑是数组溢出了,但是不知道怎么解决这个问题。
感谢您的阅读,希望有高人帮忙解答! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|