初级会员
- 积分
- 66
- 金钱
- 66
- 注册时间
- 2016-1-8
- 在线时间
- 17 小时
|
10金钱
程序如下,我的程序走到挂载SD卡那就死掉了,DeBug后发现程序在diskio.c文件中的disk read函数下的while里进行死循环出不来了,SD_ReadDisk(buff,sector,count);这个函数返回值一直是7,这个7对应的是SD_START_BIT_ERR ,接收起始位错误,那具体应该怎么改才能搞好?我SD卡的初始化是正确的show_sdcard_info();也能把信息发到串口调试助手上。
#include "ff.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "exfuns.h"
#include "fattester.h"
#include "delay.h"
#include "led.h"
#include "usart.h"
#include "stm32f4xx.h"
#include "diskio.h"
int main(void)
{u8 res=0;
My_LED_Init();
delay_init(104);
USART2_Init(115200);
my_mem_init(SRAMIN);
//my_mem_init(SRAMCCM);(我把这个函数注释掉了,不注释程序跑到这就死了)
if(SD_Init()==0)
{printf("\r\n SD卡初始化成功 \r\n");
}else printf(" SD卡初始化失败\r\n");
show_sdcard_info();
res=exfuns_init();
if(res==0)
{printf(" FATFS内存分配成功\r\n");
res=mf_mount("0:",1);
if(res==0)
{
printf(" SD卡挂载成功\r\n");
}else printf(" SD卡挂载失败\r\n");
}else printf(" FATFS内存分配失败\r\n");printf(" 错误代码:%d\r\n",res);
mf_scan_files("0:");
mf_open("0:/qq.txt",FA_OPEN_ALWAYS|FA_WRITE);
mf_lseek(0);
mf_close();
while(1)
{
LED_REV;
delay_ms(350);
LED_REV;
delay_ms(350);
}
}
[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
呼,问题终于解决了,把SD_Init函数里的errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);改为errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_1b);就能成功挂载SD卡,虽然读取速度变慢了。
|