新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2016-10-27
- 在线时间
- 24 小时
|
12金钱
本帖最后由 zeroawp 于 2016-10-28 16:06 编辑
用MINISTM32的FATFS例程,发现文件无法正常创建。
运行结果如下:
Begin Write file...
Write data len:512
Write Error:9
Write data over.
Write SD OK!
错误9表示The file/directory object is invalid,文件在电脑上打开有文件名,但是无法打开。
代码如下:
[mw_shl_code=c,true]#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
#include "dma.h"
#include "24cxx.h"
#include "flash.h"
#include "touch.h"
#include "24l01.h"
#include "mmc_sd.h"
#include "string.h"
#include "malloc.h"
#include "exfuns.h"
#include "fattester.h"
//Mini STM32¿a·¢°å·¶ày′úÂë20
//SD¿¨ êμÑé
//ÕyμãÔ-×ó@ALIENTEK
//¼¼êõÂÛì3:www.openedv.com
u8 Fatfs_Write(u8 *path);
u8 buf[512];//SD¿¨êy¾Y»o′æÇø
FIL *filea;
int main(void)
{
u8 t=0,res;
char data[512];
u32 sd_size;
u16 i=0;
u8 getcid,*cid_data;
//Stm32_Clock_Init(9);//Ïμí3ê±ÖóéèÖÃ
delay_init(72); //Ñóê±3õê¼»ˉ
//uart_init(72,9600); //′®¿ú13õê¼»ˉ
//LCD_Init(); //3õê¼»ˉòo¾§
//LED_Init(); //LED3õê¼»ˉ
mem_init(SRAMIN); //3õê¼»ˉÄú2¿Äú′æ3Ø
exfuns_init(); //ÎafatfsÏà1رäá¿éêÇëÄú′æ
f_mount(0,fs[0]); //1òÔØSD¿¨
//POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
// LCD_ShowString(60,50,"Mini STM32");
// LCD_ShowString(60,70,"SD Card TEST");
// LCD_ShowString(60,90,"ATOM@ALIENTEK");
// LCD_ShowString(60,110,"2011/1/1");
printf("SD Card TEST\n");
//printf("temperature1:%6.2f¡æ Humidity1 RH%6.2f%%\n",temperature,Humidity);
while(SD_Initialize()!=0)//¼ì2a2»μ½SD¿¨
{
//LCD_ShowString(60,130,"SD Card Failed!");
printf("SD Card Failed!\n");
delay_ms(500);
//LCD_ShowString(60,130,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0éá˸
}
//¼ì2aSD¿¨3é1|
// LCD_ShowString(60,130,"SD Card Checked OK ");
// LCD_ShowString(60,150,"SD Card Size: Mb");
printf("SD Card Checked OK!\n");
sd_size=SD_GetCapacity();
//sd_size=SD_GetSectorCount();
//LCD_ShowNum(164,150,sd_size>>20,4,16);//ÏÔê¾SD¿¨èYá¿
printf("sd_size:%ld\n",sd_size);
mf_mount(0); //ÔúFatFsÄ£¿ééÏ×¢2á/×¢Ïúò»¸ö1¤×÷Çø(ÎļtÏμí3¶ÔÏó)
//ËμÃ÷£o1¡¢ò»¶¨òaÏ趨òåò»¸ö FATFS
// 2¡¢ÔúòÆÖ2μÄ1y3ìÖDò»ÑùòaóÃF_MOUNToˉêy
// 3¡¢Ôúê1óÃèÎoÎÆäËûÎļtoˉêy֮ǰ£¬±ØDëê1óøÃoˉêyÎaÿ¸ö¾í×¢2áò»¸ö1¤×÷Çø¡£
// òa×¢Ïúò»¸ö1¤×÷Çø£¬Ö»òaÖ¸¶¨FileSystemObjectÎaNULL¼′¿é£¬è»oó¸Ã1¤×÷Çø¿éòÔ±»¶aÆú¡£
//′ò¿adata.txtÎļt èç1ûòa′ò¿aμÄÎļt2»′æÔú£¬Ôò·μ»Øê§°ü
//res = f_open(&file,"data.txt",FA_OPEN_EXISTING | FA_READ); // ¿Õ°×Îļt¶ÔÏó½á11Ö¸Õë,ÎļtÃûÖ¸Õë,ģ꽱êÖ¾ £¨′ò¿a¿éòÔ£©
// res = f_open(&file,"mcu.doc",FA_CREATE_ALWAYS | FA_WRITE); // ¿Õ°×Îļt¶ÔÏó½á11Ö¸Õë,ÎļtÃûÖ¸Õë,ģ꽱êÖ¾ £¨½¨á¢¿éòÔ£©
// res = f_open(&file,"asi",FA_CREATE_NEW | FA_WRITE); //Îaê2Ã′D½¨ò»¸öÎļt»á3öÏÖÎļtòѾ-′æÔúÄØ£¿
mf_mkdir("123"); //½¨á¢μúò»¸öÎļt¼D123
printf("Create folder 123 OK!\n");
// mf_mkdir("123/sub2"); //Ôú123Ͻ¨á¢ò»¸öÎļt¼Dsub2
// printf("Create folder 123/sub2 OK!\n");
// mf_mkdir("123/sub2/sub3"); //Ôú123Ï£¬sub2àィá¢ò»¸ösub3
// printf("Create folder 123/sub2/sub3 OK!\n");
// mf_mkdir("0123");
//mf_open("0:/123/sub2/sub3/read.txt", FA_CREATE_ALWAYS | FA_WRITE); //Ôú01¤×÷Çø123ÖDμÄsub2àïμÄsub3Îļt¼DÖD½¨á¢read.txt
mf_open("0:/123/read.txt", FA_OPEN_ALWAYS | FA_WRITE); //Ôú01¤×÷Çø123ÖDμÄsub2àïμÄsub3Îļt¼DÖD½¨á¢read.txt
printf("Create read.txt OK!\n");
//mf_open("0:SD1.txt", FA_CREATE_ALWAYS | FA_WRITE); //Ôú01¤×÷Çø123ÖDμÄsub2àïμÄsub3Îļt¼DÖD½¨á¢read.txt
// printf("Create read.txt OK!\n");
delay_ms(500);
for(i=0;i<512;i++)
{
// data = i+0x30;
data='i';
}
mf_write((u8*)data,512);
printf("Write SD OK!\n");
mf_close(); //1رÕ′ò¿aμÄÎļt
mf_mount(0); // ×¢Ïú1¤×÷Çø(Ôú·ÏÆúǰ)
printf("Complete!");
while(1)
{
delay_ms(200);
LED0=!LED0;
}
}
[/mw_shl_code]
|
|