请教各位大神关于FATFS“自动保存”文件损坏问题

2019-07-20 14:31发布

在ucos四个任务中进行数据保存操作,在定时器任务中设计了自动保存功能:
void tmr2_callback(void *p_tmr, void *p_arg)     30分钟运行一次
{
        OS_ERR err;
        CPU_SR_ALLOC();
OS_CRITICAL_ENTER();                                                      进入临界区
        OSTaskSuspend((OS_TCB*)&COM1_TaskTCB,&err);         挂起任务
        OSTaskSuspend((OS_TCB*)&COM6_TaskTCB,&err);
        OSTaskSuspend((OS_TCB*)&COM3_TaskTCB,&err);
        OSTaskSuspend((OS_TCB*)&COM7_TaskTCB,&err);
        OSTaskSuspend((OS_TCB*)&TIME_TaskTCB,&err);
        f_close(&file1);                                                          关闭文件
        f_close(&file6);
        f_close(&file3);
        f_close(&file7);

        f_mount(NULL,"0:",1);                                                注销工作区
        res_sd = f_mount(&fr,"0:",1);                                              注册工作区
        res_sd = f_open(&file1, "0:CTD_data201704.ctd", FA_OPEN_APPEND | FA_WRITE);     打开文件并将指针移动到末尾
        res_sd = f_open(&file6, "0:METS_data201704.mets", FA_OPEN_APPEND | FA_WRITE);
        res_sd = f_open(&file3, "0:MT_data201704.mt", FA_OPEN_APPEND | FA_WRITE);
        res_sd = f_open(&file7, "0:RBR_data201704.rbr", FA_OPEN_APPEND | FA_WRITE);       
        OSTaskResume((OS_TCB*)&COM1_TaskTCB,&err);          恢复任务
        OSTaskResume((OS_TCB*)&COM6_TaskTCB,&err);
        OSTaskResume((OS_TCB*)&COM3_TaskTCB,&err);
        OSTaskResume((OS_TCB*)&COM7_TaskTCB,&err);
        OSTaskResume((OS_TCB*)&TIME_TaskTCB,&err);
OS_CRITICAL_EXIT();
}


使用的参数是最新的FATFS系统f_open的参数
FA_OPEN_APPENDSame as FA_OPEN_ALWAYS except the read/write pointer is set end of the file.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。