堆栈改大了也是卡死哦,不过后来我调试了下,发现程序是卡在打开路径函数那里了,单独的读一个文件运行正常,是我的文件系统没设置好么请问
[mw_shl_code=c,true]void OutPutFile(void)
{ unsigned int a;
FRESULT res;
FILINFO finfo;
DIR dirs;
// int i;
// char *fn;
char path[50]={""};
printf("\n file system(Tini-FatFa0.09a) starting! \n");
//f_mount(0, &fsk); //main中已经定义过了
res = f_open(&fsrc,"hanhan.txt", FA_READ);
if(!res)
{
br=1;
a=0;
for (;;) {
for(a=0; a<512; a++) buffer[a]=0;
res = f_read(&fsrc, buffer, sizeof(buffer), &br);
printf("%s\n",buffer);
if (res || br == 0) break; // error or eof
}
}
f_close(&fsrc);
//if (f_opendir(&dirs, path) == FR_OK) //在操作系统中却不能执行,卡死在这
// {
// while (f_readdir(&dirs, &finfo) == FR_OK)
// {
// if (finfo.fattrib & AM_ARC)
// {
// if(!finfo.fname[0])
// break;
// printf("\r\n file name is:\n %s\n",finfo.fname);
// }
// }
// }
}
void MainTask(void) {
OS_ERR err;
u32 total,free;
GUI_Init();
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600); //串口初始化为9600
// SD_Init();
FSMC_SRAM_Init(); //初始化外部SRAM
mem_init(SRAMIN); //初始化内部内存池
mem_init(SRAMEX); //初始化外部内存池
exfuns_init(); //为fatfs相关变量申请内存
//SD_InitializeCards(); //检测SD卡
disk_initialize(0);
f_mount(0,fs[0]); //挂载SD卡
// f_mount(1,fs[1]); //挂载FLASH.
// GUI_SetColor(GUI_RED);
// GUI_Clear();
if(exf_getfree("0",&total,&free)) //得到SD卡的总容量和剩余容量
{
GUI_DispStringAt("FAT Error",12,90);
printf("FAT Error\r\n");
}
GUI_DispDecAt(total>>10,10,10,6);
GUI_DispDecAt(free>>10,10,30,6);
show_sdcard_info();//打印SD卡相关信息
OutPutFile();
while(1)
{
OSTimeDly( (OS_TICK )200,
(OS_OPT )OS_OPT_TIME_DLY,
(OS_ERR *)&err);
}
//while(1);
}[/mw_shl_code]
|