我正在尝试在STM32F4上使用LibJPEG解码jpg图像,这里的目标是从SD卡读取图像,解码它并将其显示在TFT LCD上。我已经配置了与 SD 卡和 FATFS 相关的所有内容,并且可以读取图像文件。使用 LibJPEG 解码时出现主要问题。
这是我解码 jpg 图像的函数:
GLOBAL(int) read_JPG_image(FIL* _fptr)
{
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
int row_stride;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, _fptr);
(void) jpeg_read_header(&cinfo, TRUE);
(void) jpeg_start_decompress(&cinfo);
row_stride = cinfo.output_width * cinfo.output_components;
buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
while (cinfo.output_scanline < cinfo.output_height)
{
(void) jpeg_read_scanlines(&cinfo, buffer, 1);
// put_scanline_someplace;
}
(void) jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
f_close(_fptr);
return 1;
}
在调试器中一切似乎都工作得很好,但是一旦我执行
jpeg_start_decompress
函数,它就会在 MCU 上生成 UsageFault。
以前有人遇到过这个问题吗?关于如何解决这个问题有什么想法吗?