Tjpgd读取ram的jpeg数据出现HardDefault错误,小白求助

2019-07-20 06:52发布

本帖最后由 kriass 于 2017-4-10 21:52 编辑

因为项目需要要从内存中读取jpg图片并显示到屏幕上,所以自己就移植了一个Tjpgd的图片解码,但是移植后发现刚调用图片显示函数就会出现HardDefault错误,小白不知道怎么处理,求助大神,代码都在我下面发的链接里面,上传不了附件,只能百度云,十分抱歉顺便问一下,如果直接解码内存中的图片,大概要多久才能解码一张??
还有,如果要传输OV2640摄像头的RGB565数据,该怎么去保存每一帧的RGB565数据呢??板子是F407探索者的,因为我要做一个实时的图像传输功能,STM到STM的。
谢谢各位帮忙。
链接:http://pan.baidu.com/s/1qXSrtO4 密码:myd1
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
kriass
2019-07-20 23:58
本帖最后由 kriass 于 2017-4-12 19:53 编辑

原子哥,我将你们的图片显示实验的代码中的FATFS系统读取文件改为直接读内存文件,然后发现图片无法显示,修改的代码如下,还希望能麻烦您看一下,也欢迎各路大神出手相救
//图片文件信息,对应FATFS的FIL
typedef struct
{        
        u8* picPoint;           //图片数据流首地址
        u32 picSize;            //图片大小
        u32 readPosition;       //图片读取的位置,实现f_read()中的分块读取
}picINFO;


//自己修改的FATFS函数
void picRead(picINFO* picinfo,u8* buff,u32 setSize,u32* readSize)   //f_read函数修改
{
        u32 i=0;
        printf("picRead ");
        if((picinfo->readPosition+setSize)>picinfo->picSize)
                *readSize=picinfo->picSize-picinfo->readPosition;
        else
                *readSize=setSize;
        if(buff==NULL)
        {
                picinfo->readPosition+=*readSize;
                return;
        }
        memset(buff,0,setSize);
        memcpy(buff,picinfo->picPoint+picinfo->readPosition,*readSize);
        picinfo->readPosition+=*readSize;
}

u8 picLseek(picINFO* picinfo,u32 setSize)                           //f_lseek函数修改
        printf("picLseek ");
        if(picinfo->readPosition+setSize>picinfo->picSize)
                picinfo->readPosition=picinfo->picSize;
        else
                picinfo->readPosition+=setSize;
        return 0;
}

u8 picOpen(picINFO* picinfo,u8* dataPoint)                           //f_open函数修改
{
        printf("picOpen ");
        if(dataPoint[0]==0XFF&&dataPoint[1]==0XD8)
        {
                picinfo->picPoint=dataPoint;
                picinfo->picSize=sizeof(dataPoint)/sizeof(u8);
                picinfo->readPosition=0;
                return 0;
        }
        printf("not a jpeg file ");
        return 1;
}

void picClose(picINFO* picinfo)                                      //f_close函数修改
{
        printf("picClose ");
        picinfo->picPoint=NULL;
        picinfo->picSize=picinfo->readPosition=0;
}
图片是用lwip实验里面的fsmake.exe做的二进制数组,定义是
static const unsigned char jpeg1[] = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,…………,0xff,0xd9,}

一周热门 更多>