原子哥,求助!将你的F407的FATS程序移植到F411上运行不了

2019-07-20 23:55发布

程序如下,我的程序走到挂载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(" SD卡初始化成功 ");
        }else printf(" SD卡初始化失败 ");
show_sdcard_info();
        res=exfuns_init();
        if(res==0)
        {printf(" FATFS内存分配成功 ");
                res=mf_mount("0:",1);
                if(res==0)
                {
                printf(" SD卡挂载成功 ");
                       
                        }else printf(" SD卡挂载失败 ");
                        }else printf(" FATFS内存分配失败 ");printf(" 错误代码:%d ",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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zx8582040/
1楼-- · 2019-07-21 04:54
呼,问题终于解决了,把SD_Init函数里的errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);改为errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_1b);就能成功挂载SD卡,虽然读取速度变慢了
正点原子
2楼-- · 2019-07-21 09:04
 精彩回答 2  元偷偷看……
zx8582040/
3楼-- · 2019-07-21 12:00
用的是你的程序,引脚特性一个也没改不应该有问题啊
1201yuge
4楼-- · 2019-07-21 12:06
楼主这么改了之后SDIO的速度就慢了吧?
zx8582040/
5楼-- · 2019-07-21 15:36
 精彩回答 2  元偷偷看……

一周热门 更多>