打印
[STM32H7]

用EMWIN播放电影卡在这一句是怎么回事不动了, hMovie = GUI_MOVIE_CreateEx(_GetData, JP

[复制链接]
137|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuling42530000|  楼主 | 2024-6-26 22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用EMWIN播放电影卡在这一句是怎么回事不动了,                 hMovie = GUI_MOVIE_CreateEx(_GetData, JPG_Buffer11, _cbNotify);///卡在创建电影丙句
代码如下
#include "main.h"
#include "led.h"
#include "usart.h"
#include "sdram.h"  
#include "lcd_rgb.h"
#include "lcd_pwm.h"
#include "touch_800x480.h"
//#include "cg.h"
//#include "dqcg.h"
//#include "dqsb.h"
//#include "sb.h"
#include "GUI.h"
#include "WM.h"

#include "ff.h"
#include "ff_gen_drv.h"
#include "sd_diskio.h"


/********************************************** 变量定义 *******************************************/

FATFS         SD_FatFs;                 // 文件系统对象
FRESULT         MyFile_Res;    // 操作结果
char SDPath[4];                        // SD卡逻辑驱动路径
/////////////////////////////////////
static FILE *ffilm;
static GUI_MOVIE_INFO   Info;
static GUI_MOVIE_HANDLE hMovie = 0;
#define        File_BUFFER                        (JPEG_OUTPUT_DATA_BUFFER + 0x200000) // 存储从Fatfs中读到的图片数据(只有使用SD卡或者SPI Flash才用到)
        UINT br;              // 实际读取的字节数      
        FRESULT         JPG_FileRes;            // 操作结果
        FIL                JPG_File;                        // 文件对象
        UINT                JPG_FileCount;                // 数据数量
        FSIZE_t        JPG_FileSize;                 // 文件大小
BYTE buffer1[500000]; // 读取缓冲区


FIL file;
FRESULT res;




uint32_t JPG_Buffer11[1024*4096]__attribute__((at(0xC0CCA000)));        // 存储从SD卡读取到的图片数据


int _GetData(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off)
{
        static int FileAddress = 0;
        FILE *file;
        U32    NumBytesRead;
        U8     * pData;

        pData  = (U8 *)*ppData;
        file = (FILE *)p;
      
        /*
        * 设置读取位置
        */
        if(Off == 1)
        {
                FileAddress = 0;               
        }
        else
        {
                FileAddress = Off;               
        }

        fseek (file, FileAddress, SEEK_SET);
      
        /*
        * 读取数据到缓存
        */
        NumBytesRead = fread (pData, 1, NumBytes, file);

        /*
        * 返回读取的字节数
        */
        return NumBytesRead;
}

////////////////////////////////////////////////////////



/********************************************** 函数声明 *******************************************/

void FatFs_Check(void);                                        // 判断FatFs是否挂载成功,若没有创建FatFs则格式化SD卡
void SystemClock_Config(void);                // 时钟初始化
void MPU_Config(void);                                        // MPU配置
      
/***************************************************************************************************
*        函 数 名: main
*        入口参数: 无
*        返 回 值: 无
*        函数功能: emWin
*        说    明: 无
****************************************************************************************************/
void _cbNotify(GUI_HMEM hMem, int Notification, U32 CurrentFrame)
{
        static uint32_t t0, t1;
      
        (void)t1;
      
        switch (Notification)
        {
                case GUI_MOVIE_NOTIFICATION_PREDRAW:
                        t0 = GUI_GetTime();
                        break;
               
                case GUI_MOVIE_NOTIFICATION_POSTDRAW:
                        t1 = GUI_GetTime() - t0;
                        //printf_videodbg("t = %d\r\n", t1);
                        break;
               
                case GUI_MOVIE_NOTIFICATION_STOP:
                        break;
               
                case GUI_MOVIE_NOTIFICATION_START:
                        break;
               
                case GUI_MOVIE_NOTIFICATION_DELETE:
                        break;
        }
}





int main(void)
{
        //GUI_MEMDEV_Handle         hMem_emf_11;        // 存储设备句柄
      
//        MPU_Config();                                // MPU配置
        SCB_EnableICache();                // 使能ICache
        SCB_EnableDCache();                // 使能DCache
        HAL_Init();                                        // 初始化HAL库
        SystemClock_Config();        // 配置系统时钟,主频480MHz
        LED_Init();                                        // 初始化LED引脚
        USART1_Init();                                // USART1初始化         
        MX_FMC_Init();                                // SDRAM初始化      
        FatFs_Check();                                //判断FatFs是否挂载成功,若没有创建FatFs则格式化SD卡
      
        __HAL_RCC_CRC_CLK_ENABLE();         // 开启CRC校验,STemWin必须要开启               
        GUI_Init();                                                        // GUI初始化      
//        LCD_PWMinit(40);                                        // 背光引脚PWM初始化,占空比40%      
        Touch_Init();                                                // 触摸屏初始化               

// 窗口管理器自动使用多缓冲,可以让动态绘图更加流畅
        WM_MULTIBUF_Enable(1);      

///        GUI_SetFont(&GUI_FontD48);         //设置字体      
///        GUI_SetColor(GUI_BLUE);                //设置画笔色  
///        GUI_SetBkColor(GUI_RED );                 //设置背景色
          GUI_SetFont(&GUI_Font32B_ASCII);         //设置字体      
        GUI_SetColor(GUI_LIGHTGRAY);                //设置画笔色  
        GUI_SetBkColor(GUI_BLACK);                 //设置背景色
        GUI_Clear();
        ////////////////////////////////////////
      
        ///////////////////////////////////////      
        ////        GUI_DispStringAt("cuo  wu",50, 100);                                 ////在指定位置显示字符
        while (1)
        {
      
                JPG_FileSize = f_size(&file);        // 获取文件大小      
        res  =f_open(&file,"1.emf", FA_READ | FA_OPEN_EXISTING);///以只读方式打开文件。      
                                           if (res == FR_OK)////打开文件成功
                                        {
                                                GUI_DispStringAt("da kai chen gong",50, 100);                                 ////在指定位置显示字符
                                // 文件打开成功,现在可以使用 file 结构体进行读写操作
} else {
                GUI_DispStringAt("cuo  wu",50, 100);                                 ////在指定位置显示字符
    // 文件打开失败,处理错误
}
               
        JPG_FileSize = f_read(&file, JPG_Buffer11,JPG_FileSize, &br);////// 读取文件内容到缓冲区
                                                   if (JPG_FileSize == FR_OK)
                                        {
                                        GUI_DispStringAt("du qu wen jian cheng gong",50, 180);                                 ////在指定位置显示字符
                                                                                                //文件打开成功,现在可以使用 file 结构体进行读写操作 FR_DISK_ERR、FR_INT_ERR、FR_NOT_READY
                                        }else {
                GUI_DispStringAt("du qu wen jian shi bai",50, 180);                                 ////在指定位置显示字符
                                                                                                //文件打开失败,处理错误
                                                 f_close(&file);///关闭文件
                                }
////////////////////////////////////////////////////////////////////////////////


                              
                 hMovie = GUI_MOVIE_CreateEx(_GetData, JPG_Buffer11, _cbNotify);///卡在创建电影丙句

                        GUI_MOVIE_SetPeriod(  hMovie, 33);///设置电影帧播放时间33MS
                                        GUI_MOVIE_Show( hMovie, 0, 0, 1);//////在指定位置播放电影
                                        GUI_MOVIE_Pause(  hMovie);///////播放电影
                                        while(1);

                }

                                        }

使用特权

评论回复
沙发
理想阳| | 2024-6-28 14:13 | 只看该作者
没内存了吗?你看看是卡在这个函数得什么判断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

54

帖子

0

粉丝