本帖最后由 蜗牛蜗牛 于 2018-10-20 09:37 编辑
介绍如下: 通过对话框创建第一个界面后按一个按钮 进入这个界面
这个界面是在paint里面重绘的24个圆形代表红绿灯,这个界面创建了一个定时器,设想的是每秒刷新一次paint内24个圆(圆的填充颜 {MOD}是红黄绿黑轮流显示,黑暂时不显示),定时器 重绘调用这个函数 WM_Paint( pMsg->hWin);//
现在的问题是:如图所示填充元会出现半个情况并且串 {MOD}了,还有就是通过打印我看出,每一秒调用一次 WM_Paint( pMsg->hWin) 。paint消息内容会进入3次,每次进入paint 只是重绘一个整屏幕三分之一左右,
我怀疑是整个有个可能和emwin的对这个屏幕绘制机制有关系,或者底层绘制设置有关系,下面会上传。c的源码,我在总循环中调用guidaly。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
emwin之GUIConf.h中有个GUI_ALLOC_SIZE,一般是8K左右,该值越大,刷屏重复次数越少。只要允许,越大越好,如果能大到显示RAM的两倍,就能一次刷完。所以STM32之类的CPU选型时先用RAM最大的,后面再按成本要求降,降到用户不能忍受为止。
#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这个吗?
emwin版本、文件可能不同吧,我没有找到你的例子中的语句。
一周热门 更多>