硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4370|回复: 5
收起左侧

[emWin] emwin 使用控件卡死+存储设备闪屏现象

[复制链接]

5

主题

7

回帖

22

积分

新手上路

积分
22
发表于 2019-10-16 17:13:31 | 显示全部楼层 |阅读模式
1、使用存储设备后感觉没有一次绘制还是一步步执行的代码如下
                        hMem0 = GUI_MEMDEV_CreateEx(0, 0, 800, 480, GUI_MEMDEV_HASTRANS);
                        GUI_MEMDEV_Select(hMem0);
                        WM_EnableMemdev(hMem0);       
                        //GUI_DrawBitmap(&bmpic, 0, 0);

                         WM_DeleteWindow(hFenLiaoSetButton);
               
                         WM_DeleteWindow(hSysSetButton);WM_DeleteWindow(hSignalSetButton);
                         WM_DeleteWindow(hDataCordButton);WM_DeleteWindow(hAlarmCordButton);WM_DeleteWindow(hMeunHandtButton);
                         WM_DeleteWindow(hWeightJiaoZhunButton);WM_DeleteWindow(hInstallButton);
                         WM_DeleteWindow(hBackButton);
                                       
                        //WM_Paint(hBackButton);
                         //WM_Exec()  WM_GetActiveWindow  WM_Update WM_EnableMemdev WM_GetId
                         //zhujiemianShow(0);       
                        createButtonflag = 0;jiemianNumber = 0;

                        GUI_MEMDEV_Select(0);
                        GUI_MEMDEV_WriteAt(hMem0, 0, 0);//
                    GUI_MEMDEV_Delete(hMem0);/

2、在单独创建的按钮进行刷屏是会卡死 报错是硬件错误 应该是内存分配问题没有找到原因
WM_SetCreateFlags(WM_CF_MEMDEV);         //Æô¶ˉËùóD′°¿úμÄ′æ′¢é豸
使能了
内存分配如下
#define GUI_NUMBYTES  1024 * 70//0x200000
#define GUI_BLOCKSIZE 64        //0x80

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       GUI_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   available memory for the GUI.
*/
void GUI_X_Config(void) {
  //
  // 32 bit aligned memory area
        static U32 aMemory[GUI_NUMBYTES/4];       
       
  // Assign memory to emWin
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
        GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //éèÖÃ′æ′¢¿ìμÄÆ½¾ù3ß′ç,¸ÃÇøÔ½′ó,¿éóÃμÄ′æ′¢¿ìêyá¿Ô½éù

  // Set default font
    GUI_SetDefaultFont(GUI_FONT_6X8);

}

求给位指点

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-10-16 17:22:03 | 显示全部楼层
你分配的动态内存太小了
回复

使用道具 举报

5

主题

7

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2019-10-16 17:42:34 | 显示全部楼层
70k还小 我这个最大好像就只能分配这么多了 我用的stm32f103ZGT6不知道为什么只能分配这么一点内存。楼主请问存储器这个是怎么回事呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-10-17 07:15:32 | 显示全部楼层
菜鸟地等待 发表于 2019-10-16 17:42
70k还小 我这个最大好像就只能分配这么多了 我用的stm32f103ZGT6不知道为什么只能分配这么一点内存。楼主请 ...

是的,比如你开头的函数GUI_MEMDEV_CreateEx就是申请800*480*2字节(rgb565颜色格式)
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-10-17 08:16:39 | 显示全部楼层
本帖最后由 caicaptain2 于 2019-10-17 08:18 编辑

f103配合5~7寸的彩屏就不能指望视觉效果了。。。内部的ram太小了,外部扩展SRAM的话又贵又慢。
我记得F103ZG的内部ram只有64KB的。。。。你怎么能够分配到70KB??????
比如,800x480的单页面就需要768kB的内存。带点流畅的界面切换,最好要1MB以上的动态内存。
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-10-17 08:23:15 | 显示全部楼层
我做过一个F103配合外部512KB的SRAM的最小系统,能改善一些显示效果。 勉强适合老平台升级一下界面效果。

stm32系统电路板.jpg


如果你是800x480的屏,芯片最好使用F429以上规格的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 12:36 , Processed in 0.266337 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表