OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5478|回复: 2

关于fatfs实验中,SD卡能够识别出来,但是无法读和写

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-5-5
在线时间
0 小时
发表于 2015-5-9 21:36:33 | 显示全部楼层 |阅读模式
5金钱



程序直接用的论坛里的
[mw_shl_code=c,true]int main(void) { u8 SDtatus; //SD卡初始化状态 u8 i; MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2); //设置中断分组 delay_init(72); //初始化延时函数 USARTx_Init(9600); //初始化串口,设置波特率为9600bps LED_Init(); //初始化LED接口 LCD_Init(); //初始化TFT_LCD mem_init(SRAMIN); //初始化内部内存池 myf_init(); //为文件系统申请内存 /****************************************************** 显示基本信息 从LCD顶部开始 ******************************************************/ LCD_Display_String_BK(30, 0, "Software Compiled Time:", 16, MAGENTA, WHITH); LCD_Display_String_BK(30, 16, __DATE__, 16, MAGENTA, WHITH); LCD_Display_String_BK(150, 16, __TIME__, 16, MAGENTA, WHITH); LCD_Display_String_BK(30, 32, "WarShip STM32.", 16, ORANGE, WHITH); LCD_Display_String_BK(30, 48, "SDIO SDCard&FatFs Test.", 16, ORANGE, WHITH); LCD_Display_String_BK(30, 64, "2014/02/26 week3", 16, ORANGE, WHITH); LCD_Display_String_BK(30, 80, "By@Sam Chan.", 16, ORANGE, WHITH); sprintf((char*)Dis_buffer, "LCD ID:%04X", LCD_Manage.ID);//将LCD ID打印到lcd_id数组 LCD_Display_String_BK(72, 96, Dis_buffer, 16, RED, WHITH); //显示LCDID到显示屏上 printf("Software Compiled Time: %s, %s.\r\n",__DATE__, __TIME__); //获取软件编译时间 /*******************我是美丽的分割线******************/ /****************************************************** SD卡初始化 ******************************************************/ if(SD_Init() != SD_OK) //初始化失败 { SDtatus = SD_Init(); LCD_Display_String_BK(30, 112, "SD Init Faild!", 16, RED, WHITH); printf("The Faild is:%d\r\n", SDtatus); } else //初始化成功了 { LCD_Display_String_BK(30, 112, "SD Init OK!!!!", 16, BLUE, WHITH); SD_Card_Printf_Info(); //打印卡信息到串口 sprintf((char*)Dis_buffer, "MID is: %d", (u8)SDCardInfo.SD_cid.ManufacturerID); //制造商ID LCD_Display_String_BK(30, 128, (u8*)Dis_buffer, 16, RED, WHITH); LCD_Display_String_BK(30, 144, "SD Size is: MB", 16, BLUE, WHITH); //显示卡容量到TFT Point_color = BLACK; LCD_Display_Array_No0(126, 144, SDCardInfo.CardCapacity, 4, 0); } /*******************我是美丽的分割线******************/ /****************************************************** 测试FatFs用函数 ******************************************************/ f_res = f_mount(0, fs[0]); //挂载SD卡 printf("f_mount res :%d\r\n", f_res); // f_mkfs(0,0,_MAX_SS); //格式化存储器 //读测试 f_res = f_open(filescr, "0:/demo.txt", FA_OPEN_DEFAULT); //打开文件 printf("f_open res :%d\r\n", f_res); if(f_res == FR_OK) //打开文件成功 { f_res = f_read(filescr, SDdatabuff, 30, &br); //读取文件内容 printf("f_read res :%d\r\n", f_res); f_res = f_close(filescr); //关闭文件 printf("f_close res :%d\r\n", f_res); printf("read string is: %s", SDdatabuff); //打印到串口 LCD_Area_Color(30, 160, 239, 192, WHITH); //清除显示区域 LCD_Display_String_BK(30, 160, "Read demo.txt data:", 16, RED, WHITH); LCD_Display_String_BK(30, 176, (u8*)SDdatabuff, 16, BLUE, WHITH); //显示读取到的内容 } else //打开失败 { LCD_Area_Color(30, 160, 239, 192, WHITH); //清除显示区域 LCD_Display_String_BK(30, 176, "No demo.txt File.", 16, BLUE, WHITH); } //写测试 f_res = f_open(filedst, "0:/test.txt", FA_OPEN_NEW_COVER); //创建文件,如果存在则覆盖 printf("\r\nf_open res :%d\r\n", f_res); f_res = f_write(filedst, test_buff, sizeof(test_buff), &bw); //写入字符串 printf("f_write res :%d\r\n", f_res); f_res = f_close(filedst); //关闭文件 printf("f_close res :%d\r\n", f_res); //打开刚才创建的文件 f_res = f_open(filescr, "0:/test.txt", FA_OPEN_DEFAULT); //打开文件 printf("f_open res :%d\r\n", f_res); f_res = f_read(filescr, SDdatabuff, 30, &br); //读取文件内容 printf("f_read res :%d\r\n", f_res); f_res = f_close(filescr); //关闭文件 printf("f_close res :%d\r\n", f_res); printf("read string is: %s", SDdatabuff); LCD_Display_String_BK(30, 192, "Write/Read test.txt data:", 16, RED, WHITH); LCD_Display_String_BK(30, 208, (u8*)SDdatabuff, 16, BLUE, WHITH); //显示读取到的内容 /*******************我是美丽的分割线******************/ LED1 = 0; while(1) { i++; delay_ms(5); if(i == 60) { LED0 = ~LED0; LED1 = ~LED1; i = 0; } } } [/mw_shl_code]

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-5-5
在线时间
0 小时
 楼主| 发表于 2015-5-9 21:36:34 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-9 22:44:53 | 显示全部楼层
直接用我们的例程测试下,不要做修改。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表