注册 登录
查看: 231|回复: 0

[K60] 关于SDHC存储时间的问题!

[复制链接]
发表于 2014-5-18 01:51:27 | 显示全部楼层 |阅读模式
void img_sd_init(void) //初始化SD
{
    int   fireres;
    char  myfilename[20];
    u16 imgsize[] = {CAMERA_H, CAMERA_W};
    u32 mybw;
    u32 Imag_num = 0;

    f_mount(0, &firefs);

    do
    {
        Imag_num ++;
        sprintf(myfilename, "0:/Fire%d.sd", Imag_num);
        fireres = f_open( &firesrc , myfilename, FA_CREATE_NEW | FA_WRITE);

        if(firefs.fs_type == 0)
        {
            firesrc.fs = 0;
            return;
        }

    }while(fireres == FR_EXIST);        //如果文件存在,则命名继续加1

    if ( fireres == FR_OK )
    {
        fireres = f_write(&firesrc, imgsize, sizeof(imgsize), (UINT *)&mybw);  //先写入高和宽,方便上位机处理
    }
    else
    {
        f_close(&firesrc);
        firesrc.fs = 0;
    }
}

void img_sd_save(u8 * imgaddr)  //存SD
{
#define SD_ONEWRITE_MAX 511   //511

    int   fireres;
    u32 mybw;
    static u8 time = 0;
    u32 size = CAMERA_SIZE;

    if(firesrc.fs != 0)
    {
        time ++;

        while(size > SD_ONEWRITE_MAX)
        {
            fireres = f_write(&firesrc, imgaddr, SD_ONEWRITE_MAX , (UINT *)&mybw);  
            imgaddr +=   SD_ONEWRITE_MAX;  
            size -=  SD_ONEWRITE_MAX;
        }

        fireres = f_write(&firesrc, imgaddr, size , (UINT *)&mybw);  

        if(fireres != FR_OK)
        {
            f_close(&firesrc);
            firesrc.fs = 0;
        }

        if(time > 30)
        {
            time = 0 ;
            f_sync(&firesrc);
        }
    }
}


请问山外哥,这个是旧版代码还是新版代码?我还发现每隔一段时间规律性的来一个很长时间的存储,不是道问什么!
回复

使用道具 举报

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

本版积分规则

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