OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5970|回复: 5

关于emWin在UCOSII下的两个问题(长时间使用可能死机,多任务下数据错乱)

[复制链接]

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2015-7-15 22:23:39 | 显示全部楼层 |阅读模式
5金钱
1.长时间使用可能死机,怎么解决?
[mw_shl_code=c,true]int GUI_X_GetTime(void) { return ((int)OSTimeGet()); //获取系统时间,此处时间单元为1ms }[/mw_shl_code]
这是emwin的时间获取函数,最大为2147483647ms,即24.85天。也就是要是设备连续运行这么多天的话,计数器到达最大值,此时就有可能出现问题。
于是我就做了个测试,将ucos中的OSTime类型改为u16,即溢出频率为65.5s。
[mw_shl_code=c,true]OS_EXT volatile INT32U OSTime; [/mw_shl_code]
测试中发现,在使用了GUI_Delay函数的任务中,过了65秒,该任务就死了,我猜想是由于OSTime溢出导致GUI获取时间出了问题,导致长时间等待,出现假死的现象。这该怎么破?我有项目需设备长期连续运行,使用EMWIN+UCOS,是不能死机的。我尝试过各种方法,还是没能避免这种现象。
2.多个任务下使用EMWIN,出现字体,颜色的意外改变。
[mw_shl_code=c,true]void emwin_task(void *pdata) //优先级为3 { pdata = pdata; GUI_CURSOR_Show(); //显示鼠标 numdisplay_demo(0,50); GUI_SetBkColor(GUI_BLUE); //设置蓝色背景 GUI_SetColor(GUI_WHITE); //设置字体颜色为白色 GUI_SetFont(&GUI_Font8x16); //设置字体 GUI_SetTextMode(GUI_TM_TRANS); //透明模式 GUI_DispStringAt("CPUUsage: %",60,200); GUI_DispStringAt("times:0000",84,216); GUI_SetColor(GUI_RED); //设置字体颜色为红色 GUI_FillRect(100,232,140,257); GUI_SetTextMode(GUI_TM_NORMAL); //正常模式 while(1) { LED1 = !LED1; GUI_DispDecAt(OSCPUUsage,132,200,3); GUI_Delay(250); } } //LED0任务 void led0_task(void *pdata) //优先级为1 { u16 t=0; pdata = pdata; while(1) { LED0 = !LED0; GUI_DispDecAt(t,200,200,3); t++; OSTimeDlyHMSM(0,0,0,500);//延时500ms } }[/mw_shl_code]
代码如上所示,测试结果发现上面那个任务以红色,8*16号字体显示;但是下面那个任务却是以黑底白字,6*8字体显示(好像是系统默认字体)。
当我交换两个任务的优先级时,发现两个任务均以以黑底白字,6*8字体显示。这是为什么?我在任务
emwin_task中已经进行了相关的设置,按理说以最后的为准,无论优先级是什么情况,稳定状态下两个任务就应该都是蓝底红字,8*16号字体显示的。
麻烦大家帮我看看这是什么情况,谢谢了!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-15 23:53:28 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
 楼主| 发表于 2015-7-16 09:09:32 | 显示全部楼层
再顶上去~!!
回复

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-7-17 15:52:20 | 显示全部楼层
站长最近在闭关做产品,所有的帖子都是帮顶,我也帮顶,呵呵
合肥-文盲
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
 楼主| 发表于 2015-7-19 18:12:19 | 显示全部楼层
给segger公司发过一封英文邮件,过了三天,他们还不回我。。。。我太渺小了。
回复

使用道具 举报

12

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-9-21
在线时间
59 小时
发表于 2016-10-19 10:26:30 | 显示全部楼层
多任务调用emwin API,void GUI_X_Config(void)函数中增加了        GUITASK_SetMaxTask(GUI_MAXTASK); 其中GUI_MAXTASK=5;但是还是会出现第二个任务执行,字体和颜色设置变化。 可以肯定是emwin的多任务配置问题!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 20:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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