请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

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

[emWin] 实际测试ST公司发布的两种库STemWin526_CM4_OS_Keil_ot.lib和STemWin526_CM4_OS_Ke

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106395
QQ
发表于 2015-3-20 19:34:10 | 显示全部楼层 |阅读模式
这两种库STemWin526_CM4_OS_Keil_ot.lib和STemWin526_CM4_OS_Keil.lib是有区别的,
带上字母ot的是表示做了优化。
2.png

1.png



在升级STM32-V5开发板上的示波器代码时,发现使用库
STemWin526_CM4_OS_Keil_ot.lib并且把MDK的优化等级设置为1时,出现波形叠加的情况。更换为
STemWin526_CM4_OS_Keil.lib问题解决了。

PS: 通过此事是想告诉大家,测试工程的时候可以这两个库都试试
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106395
QQ
 楼主| 发表于 2015-3-20 20:24:21 | 显示全部楼层
下面是使用库STemWin526_CM4_OS_Keil_ot.lib和STemWin526_CM4_OS_Keil.lib
在不用MDK优化等级0,1,2,3四种情况下的实际测试。
测试条件:1. 使用STM32-V5开发板上面的示波器程序测试刷新效果,刷新一次波形需要的时间。
                2. 采样率6Msps
                3. 采集30KHz方波信号
                4. MDK5.10优化等级0
====================================================+++++++++++++++++++++
使用库:STemWin526_CM4_OS_Keil_ot.lib
刷新时间(单位ms)
6.png

使用库:STemWin526_CM4_OS_Keil.lib
刷新时间(单位ms)
5.png


测试条件:1. 使用STM32-V5开发板上面的示波器程序测试刷新效果,刷新一次波形需要的时间。            
                2. 采样率6Msps
                3. 采集30KHz方波信号               
                4. MDK5.10优化等级1
====================================================++++++++++++++++
使用库:STemWin526_CM4_OS_Keil_ot.lib
刷新时间(单位ms)
3.png
使用库:STemWin526_CM4_OS_Keil.lib
刷新时间(单位ms)
4.png

测试条件:1. 使用STM32-V5开发板上面的示波器程序测试刷新效果。
                2. 采样率6Msps
                3. 采集30KHz方波信号
                4. MDK优化等级2
====================================================++++++++++++++++++
使用库:STemWin526_CM4_OS_Keil_ot.lib
刷新时间(单位ms)
7.png


使用库:STemWin526_CM4_OS_Keil.lib
刷新时间(单位ms)
8.png


测试条件:1. 使用STM32-V5开发板上面的示波器程序测试刷新效果。
                2. 采样率6Msps
                3. 采集30KHz方波信号
                4. MDK优化等级3
====================================================+++++++++++++
使用库:STemWin526_CM4_OS_Keil_ot.lib
刷新时间(单位ms)
10.png


使用库:STemWin526_CM4_OS_Keil.lib刷新时间(单位ms)
9.png

测试函数如下:
  1. /* 记录刷新前的时刻 */
  2.         t0 = GUI_GetTime();
  3.         
  4.         /* hWinRunStopFlag = 0 表示运行态
  5.            g_ucWaveRefreshFlag = 1也表示运行态,用于使用K2按键将波形暂停后波形的刷新。
  6.         */
  7.         if((hWinRunStopFlag == 0)||(g_ucWaveRefreshFlag == 1))
  8.         {
  9.             /* 采用分片存储空间绘制 */
  10.             /* 矩形框,回调函数,回调函数的参数 ,0或存储设备的分段数量, O或者GUI_MEMDEV_HASTRANS */
  11.             GUI_MEMDEV_Draw(&Rect, _Draw, &Param, 0, GUI_MEMDEV_NOTRANS);
  12.             g_ucWaveRefreshFlag = 0;  /* 0:表示不执行波形区域的刷新,1:表示执行波形区域的刷新 */
  13.         }
  14.         /* 求差值,根据不同的执行时间差,执行不同的延迟时间 */
  15.         t1 = GUI_GetTime() - t0;
  16.         printf("%d\\r\\n",  t1);
复制代码
=================================================================
=================================================================
通过上面的测试,我们可以发现:
1. 函数STemWin526_CM4_OS_Keil_ot.lib的优化效果并不明显,甚至有时候会出现上面所说的问题。
    这个时候大家要多做测试,选择合适的库。当然,选择库STemWin526_CM4_OS_Keil.lib是做保险的
2. MDK设置优化等级后,优化为等级1和等级2基本刷新速度一样,但是比优化等级0要高一些。
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2015-3-21 12:04:17 | 显示全部楼层
如果只在一个线程使用emwin的话,可以使用非os版本,那个速度还要快
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106395
QQ
 楼主| 发表于 2015-3-21 12:12:22 | 显示全部楼层

回 myxiaonia 的帖子

myxiaonia:如果只在一个线程使用emwin的话,可以使用非os版本,那个速度还要快 (2015-03-21 12:04) 
可以认为是单线程,现在只有触摸放在另一个任务了。
主要觉得它的这个优化版本不太好用,使用了这个优化版本后再用MDK做优化,有时候会出一些莫名其妙的问题,如果不做优化就没有问题。
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2015-12-6 20:06:59 | 显示全部楼层
[s:151]  [s:151]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
发表于 2019-1-25 17:53:12 | 显示全部楼层
多谢多谢         多谢多谢         多谢多谢         多谢多谢         
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 17:34 , Processed in 0.180196 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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