搜索
bottom↓
回复: 18

stm32 emwin 2D 绘图绘制颜色一半就修改了

[复制链接]

出0入0汤圆

发表于 2018-10-20 09:12:49 | 显示全部楼层 |阅读模式
本帖最后由 蜗牛蜗牛 于 2018-10-20 09:37 编辑

介绍如下: 通过对话框创建第一个界面后按一个按钮 进入这个界面
这个界面是在paint里面重绘的24个圆形代表红绿灯,这个界面创建了一个定时器,设想的是每秒刷新一次paint内24个圆(圆的填充颜色是红黄绿黑轮流显示,黑暂时不显示),定时器 重绘调用这个函数 WM_Paint( pMsg->hWin);//
现在的问题是:如图所示填充元会出现半个情况并且串色了,还有就是通过打印我看出,每一秒调用一次  WM_Paint( pMsg->hWin) 。paint消息内容会进入3次,每次进入paint 只是重绘一个整屏幕三分之一左右,
我怀疑是整个有个可能和emwin的对这个屏幕绘制机制有关系,或者底层绘制设置有关系,下面会上传。c的源码,我在总循环中调用guidaly。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2018-10-20 09:47:08 | 显示全部楼层
高大上的交通灯

出0入8汤圆

发表于 2018-10-20 09:50:49 | 显示全部楼层
没看文字,第一眼以为是个qfp的封装。。。

出0入0汤圆

发表于 2018-10-20 10:53:36 来自手机 | 显示全部楼层
我也以为是个封装!嘿嘿嘿!

出0入12汤圆

发表于 2018-10-20 11:10:30 | 显示全部楼层
咋一看以为是LQFP封装。

出0入0汤圆

发表于 2018-10-20 11:35:10 | 显示全部楼层
是不是重入了,先把你的timer间隔加长试试

出0入0汤圆

发表于 2018-10-20 11:36:31 | 显示全部楼层
如果带 os 需要实现 gui_lock 和gui_unlock

出0入0汤圆

 楼主| 发表于 2018-10-20 11:39:27 | 显示全部楼层
tangnyzl 发表于 2018-10-20 11:35
是不是重入了,先把你的timer间隔加长试试

谢谢 暂时还没上系统,

出0入8汤圆

发表于 2018-10-20 12:04:29 | 显示全部楼层
EMWIN你玩得真6666

出0入0汤圆

 楼主| 发表于 2018-10-20 12:37:53 | 显示全部楼层

学了半月了。精髓还没掌握,可以搜索2天速成emwin 那个资料很好,不过2天是理解不了的我比较笨

出0入0汤圆

发表于 2018-10-20 09:12:50 | 显示全部楼层
本帖最后由 cock 于 2018-10-21 21:46 编辑

EMWIN这个图形系统在高分大屏上是相当的蛋痛,加大图形系统的内存,可以减少屏幕绘制的次数,但其它地方内存就不够了。
我试过的一块800X480的屏,得分十几次绘制才能完成。每次绘屏时是从上向下输出,大约就是一次绘屏输出几十行。全屏得分十几次才能绘完。
这个绘屏操作得花不少时间,如果在绘制期间,你在定时程序改变了灯的颜色,就会绘出不同的灯色。
解决办法倒简单,就是别用全屏刷新。窗口获得屏幕时,在paint消息中绘出底图,就是大家说的qfp封装。然后在定时器程序中,先获得屏幕指针,在屏上逐一按底色绘圆,在圆中绘数字。如果圆灯位置是一直不变的,那程序就简单之极。如果灯位置会动,就得先将灯所在的底图对应部分重绘一下。总之,STM32的屏幕上,尽量不要全屏重绘。

出0入0汤圆

 楼主| 发表于 2018-10-22 09:16:15 | 显示全部楼层
cock 发表于 2018-10-20 09:12
EMWIN这个图形系统在高分大屏上是相当的蛋痛,加大图形系统的内存,可以减少屏幕绘制的次数,但其它地方内 ...

谢谢指点

出0入0汤圆

发表于 2018-10-22 09:54:10 | 显示全部楼层
真的以为是画的封装

出0入0汤圆

发表于 2018-11-6 10:44:59 | 显示全部楼层
cock 发表于 2018-10-20 09:12
EMWIN这个图形系统在高分大屏上是相当的蛋痛,加大图形系统的内存,可以减少屏幕绘制的次数,但其它地方内 ...

请教一下,移植一个emwin 需要多少ram资源(我需要跑视频播放,屏的大小是240*320),我需要怎么评估我的系统ram是否足够?谢谢!

出10入12汤圆

发表于 2018-11-6 13:29:40 | 显示全部楼层
玩得针66666

出0入0汤圆

发表于 2018-11-6 14:33:22 | 显示全部楼层
sinc_mark 发表于 2018-11-6 10:44
请教一下,移植一个emwin 需要多少ram资源(我需要跑视频播放,屏的大小是240*320),我需要怎么评估我的 ...

emwin之GUIConf.h中有个GUI_ALLOC_SIZE,一般是8K左右,该值越大,刷屏重复次数越少。只要允许,越大越好,如果能大到显示RAM的两倍,就能一次刷完。所以STM32之类的CPU选型时先用RAM最大的,后面再按成本要求降,降到用户不能忍受为止。

出0入0汤圆

 楼主| 发表于 2018-11-6 15:42:44 | 显示全部楼层
cock 发表于 2018-11-6 14:33
emwin之GUIConf.h中有个GUI_ALLOC_SIZE,一般是8K左右,该值越大,刷屏重复次数越少。只要允许,越大越好 ...

#define USE_EXRAM  1//使用外部RAM
//设置EMWIN内存大小
#define GUI_NUMBYTES  (960*1024)
#define GUI_BLOCKSIZE  0x80  //块大小


//GUI_X_Config
//初始化的时候调用,用来设置emwin所使用的内存
void GUI_X_Config(void) {
        if(USE_EXRAM) //使用外部RAM
        {
                U32 *aMemory = mymalloc(SRAMEX,GUI_NUMBYTES); //从外部SRAM中分配GUI_NUMBYTES字节的内存
                GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
                GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
                GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
        }else  //使用内部RAM
        {
                U32 *aMemory = mymalloc(SRAMIN,GUI_NUMBYTES); //从内部RAM中分配GUI_NUMBYTES字节的内存
                GUI_ALLOC_AssignMemory((U32 *)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
                GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
                GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
        }
}


我在确认一下是修改这个 GUI_BLOCKSIZE这个吗?

出0入0汤圆

发表于 2018-11-6 16:46:08 | 显示全部楼层
蜗牛蜗牛 发表于 2018-11-6 15:42
#define USE_EXRAM  1//使用外部RAM
//设置EMWIN内存大小
#define GUI_NUMBYTES  (960*1024)

emwin版本、文件可能不同吧,我没有找到你的例子中的语句。

出0入0汤圆

 楼主| 发表于 2018-11-6 17:07:06 | 显示全部楼层
cock 发表于 2018-11-6 16:46
emwin版本、文件可能不同吧,我没有找到你的例子中的语句。

谢谢了,我这个版本的是有2个函数一个是设置总内存大小,另外一个是这个块的大小,假设是100k总量 然后块大小设置成1K ,这个就有100个内存块(假设没有分配内存时候损耗)
  GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
  GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
我增大了GUI_BLOCKSIZE也就是块大小好像比原理快一点,总内存大小这个1M ,为了保险我设置了960kb
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 12:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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