Jei的个人空间 https://passport2.21ic.com/?1569086 [收藏] [复制] [RSS]

日志

基于LPC17XX的Fatfs介绍 - SD卡日志记录

已有 720 次阅读2015-9-30 23:17 |个人分类:ARM|系统分类:ARM| 日志记录, 源文件, FATFS, SD卡, 文件写入


        一、Fatfs源文件来源于官网。移植过程中仅仅需要简单的配置。
#include "sd.h"
        #include "sd.c"
        #include "ff.c"
        #include "diskio.c"
        #include "..\\ff10\src\option\unicode.c"
#include "spi_port.h"
       
        二、写日志到SD卡,日志目录为 TKIT/Log/****.txt
#if KIT_FATFS_LOG_EN && KIT_FATFS_EN
TKIT_ErrType                                t_memory_WriteLog                                        (char * log)
{
                TKIT_ErrType err = TKIT_SUCCESS;
                FRESULT     res;
                FIL              fdst;
                DIR                   dir;
                INT32U       bw;

                FATFS                                fs;
                INT8U                                log_path[64];
                INT32U                               Time;
                CTKIT_TIME                      *pTime;

                //Mount file system
                if( TKIT_SUCCESS==err)
                {
                                res = f_mount(&fs,MEMORY_ROOT,0);
                                if(res != FR_OK){
                                                err = E_MEM_FATLOGPATH;
                                }
                }
                if( TKIT_SUCCESS == err )
                {
                                res = f_opendir(&dir,MEMORY_LOG_PATH);
                                if(res != FR_OK){
                                                res = f_mkdir(MEMORY_LOG_PATH);
                                }
                                if(res != FR_OK){
                                                err = E_MEM_FATMKPATH;
                                }
                }
                if( TKIT_SUCCESS == err )
                {
                                std_ToString(log_path,"%s/%s",MEMORY_LOG_PATH,MEMORY_LOG_PATH_SON);
                                res = f_opendir(&dir,(char*)log_path);
                                if(res != FR_OK){
                                                res = f_mkdir( (char*) log_path);
                                }
                                if(res != FR_OK){
                                                err = E_MEM_FATMKPATH;
                                }
                }

                pTime = TKIT_TimeGet();
                Time = pTime->Y * 10000 + pTime->M * 100 + pTime->D;
                std_ToString(log_path,"%s/%s/%8d.txt",MEMORY_LOG_PATH,MEMORY_LOG_PATH_SON,Time);

                if( TKIT_SUCCESS==err)
                {
                                res = f_open(&fdst,(char*)log_path, FA_OPEN_ALWAYS|FA_WRITE);
                                if(res != FR_OK){
                                        err = E_MEM_FATLOGFILE;
                                }
                }

                //дÈëÈÕÖ¾Îı¾Ä©¶Ë
                if( TKIT_SUCCESS==err)
                {
                                std_ToString(log_path,"%2d:%2d:%2d ",pTime->h,pTime->m,pTime->s);
                                f_lseek(&fdst,(fdst).fsize);
                                res = f_write(&fdst, log_path, std_StrLen((char*)log_path), &bw);

                                f_lseek(&fdst,(fdst).fsize);
                                res = f_write(&fdst, log, std_StrLen((char*)log), &bw);
                                if(res != FR_OK){
                                        err = E_MEM_FATLOGWRITE;
                                }
                                f_close(&fdst);// close file 
                }

                //Unmount file system
                f_mount(NULL,MEMORY_LOG_PATH,0);

                if( TKIT_SUCCESS!=err)
                {
                                cuart_Printf("<SD.Fat.Log> Write log. Error=0x%4x  Fat err=%d\r\n",err,res );
                }
                return err;
}
        三、图片:日志文件
       
        图片:日志文件打印浏览
       


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)