请教下各位高手,我现在使用原子的STM32F407开发板来对SD卡进行操作,在emWin例程“EMWIN实验15 BUTTON使用”(这个例程是有ucOS的)。挂载SD卡失败
FSMC_SRAM_Init(); //SRAM初始化
mem_init(SRAMIN); //内部RAM初始化
mem_init(SRAMEX); //外部RAM初始化
mem_init(SRAMCCM); //CCM初始化
exfuns_init(); //为fatfs文件系统分配内存成功
f_mount(fs[0],"0:",1); //挂载SD卡失败,返回FR_DISK_ERR或者 FR_NO_FILESYSTEM
下面这段是自己加的,用来检查失败的返回值,发现是1与13都有出现。
while(Result = f_mount(fs[0],"0:",1)) //挂载SD卡失败
{
sprintf((char*)tbuf,"Result:%d\r\n",Result);
printf(tbuf);
POINT_COLOR=RED;//设置显示字体为红色
LCD_ShowString(30,150,200,16,16," Mount SD Card Error!");
delay_ms(500);
LCD_Fill(30,150,240,150+16,WHITE); //Çå³ýÏÔʾ
delay_ms(500);
LED0=!LED0;//DS0ÉÁ˸
}
串口显示效果如下:
Mount SD Card Error! Result:13
Mount SD Card Error! Result:13
Mount SD Card Error! Result:1
Mount SD Card Error! Result:13
Mount SD Card Error! Result:13
Mount SD Card Error! Result:1
Mount SD Card Error! Result:13
Mount SD Card Error! Result:13
Mount SD Card Error! Result:13
Mount SD Card Error! Result:13
Mount SD Card Error! Result:1
“实验39 FATFS实验”初始化代码,用同一张SD卡,整个实验是成功的。这个例程是没有ucOS的。
W25QXX_Init(); //初始化W25Q128
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMCCM); //初始化CCM内存池
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"FATFS TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/5/15");
LCD_ShowString(30,130,200,16,16,"Use USMART for test");
while(SD_Init())//检测不到SD卡
{
LCD_ShowString(30,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
|