各位好,
想与各位请教,我用STM32CubeMX 建立了以FatFs 作为读取JPG档案,且用硬体解码于屏幕显示。
有参考过CubeMX的程序( STM32H743EVAL ->JPEG_DecodingUsingFs_DMA),但是似乎有些状况,不知板上是否有人遇到类似的问题?
如下
- /*##-8- Wait till end of JPEG decoding and perfom Input Processing in BackGround #*/
- do
- {
复制代码
在do..while 部分一直不断执行无法使得 JpegProcessing_End = 1
以下为JPEG_InputHandler,一到JPEG_BUFFER_EMPTY 就 Return 0
- uint32_t JPEG_InputHandler(JPEG_HandleTypeDef *hjpeg)
- {
- if (Jpeg_HWDecodingEnd == 0)
- {
- if(Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].State == JPEG_BUFFER_EMPTY)
- {
- if(f_read (pFile, Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].DataBuffer , CHUNK_SIZE_IN, (UINT*)(&Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].DataBufferSize)) == FR_OK)
- {
- Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].State = JPEG_BUFFER_FULL;
- }
- else
- {
- Error_Handler();
- }
-
- if((Input_Is_Paused == 1) && (JPEG_IN_Write_BufferIndex == JPEG_IN_Read_BufferIndex))
- {
- Input_Is_Paused = 0;
- HAL_JPEG_ConfigInputBuffer(hjpeg,Jpeg_IN_BufferTab[JPEG_IN_Read_BufferIndex].DataBuffer, Jpeg_IN_BufferTab[JPEG_IN_Read_BufferIndex].DataBufferSize);
-
- HAL_JPEG_Resume(hjpeg, JPEG_PAUSE_RESUME_INPUT);
- }
-
- JPEG_IN_Write_BufferIndex++;
- if(JPEG_IN_Write_BufferIndex >= NB_INPUT_DATA_BUFFERS)
- {
- JPEG_IN_Write_BufferIndex = 0;
- }
- }
- return 0;
- }
- else
- {
- return 1;
- }
- }
复制代码 其中另一个可使得 Jpeg_HWDecodingEnd = 1 的程序
- void HAL_JPEG_DecodeCpltCallback(JPEG_HandleTypeDef *hjpeg)
- {
- Jpeg_HWDecodingEnd = 1;
- }
复制代码 但因未开启Callback而无法使用
有高手能相助吗?
非常感谢!
|
还应结合JPEG_OutputHandler一起看 读处理;才能了解 JPEG_BUFFER_EMPTY 的原因;
您有平台,用KEIL跟踪处理;状态变 JPEG_BUFFER_EMPTY即为断点, 应该能找到原因
感谢 mikecai 的协助
虽然说这个程序是官方的,不过在这个程序中却没有设置JPEG_OutputHandler,后来在F769范例中找到类似的方式,不过他的程序转成RGB的方式却不同。
这个方面我再多确认问题面,还是再次感谢 您的协助!!