硬汉嵌入式论坛

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

[emWin] emwin 运行一段时间就卡了。

[复制链接]

25

主题

58

回帖

133

积分

初级会员

积分
133
发表于 2020-3-20 16:22:29 | 显示全部楼层 |阅读模式
本帖最后由 wxqhit 于 2020-3-20 16:26 编辑

版主,

我之前就遇到过这个问题。当时没有抽出时间分析这个问题。

我需要自己画一些图形显示的界面,我就在主窗体函数背景区域来实现自己风格的图形风格

   case WM_CREATE:
    //
    // Create timer to be used to modify the battery symbol
    //
    WM_CreateTimer(hItem, 0, 100, 0);
    break;
    case WM_TIMER:

                        case WIN_TESTBMP2:        
                                WM_InvalidateWindow(hItem);
                                WM_RestartTimer(pMsg->Data.v, 100);
                        case WIN_SysConfig:        
                                WM_InvalidateWindow(hItem);
                                WM_RestartTimer(pMsg->Data.v, 100);
                        break;                        
                        default:        
                                WM_InvalidateWindow(hItem);
                                WM_RestartTimer(pMsg->Data.v, 3000);
                                break;

    break;

  我在主窗体定义了一个定时器。
  默认情况下,我是3秒钟刷新一次。
WIN_SysConfig:这个是我要显示时间的界面。要实时显示小时分和秒。显示时间我用了emwin的text控件。
在这个界面下,很长一段时间就没有发生卡死。

还有一个WIN_TESTBMP2 是我要自己在主窗体背景区域画一些数据波形。
这个界面下,我把所有的主窗体的子窗体控件都隐藏了。就在背景区域用基本的点,线,还有字符显示函数完成图形的实时显示。
但是只要在这个界面下运行,过一会儿就卡死了。

这个是什么问题?

难道WM_InvalidateWindow(hItem);函数用的有问题hItem句柄指针就是主窗体的。

其他的子窗口控件就是主窗体的子窗口。我在创建子窗体的时候,选择的父类就是主窗体句柄。


这些都是在主窗体的回调函数里完成的。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-3-21 10:08:54 | 显示全部楼层
可以给一个窗口创建多个定时器的,管理比较方便。
回复

使用道具 举报

25

主题

58

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2020-3-25 15:11:46 | 显示全部楼层
谢谢@eric2013。

回复

使用道具 举报

25

主题

58

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2020-4-5 10:36:54 | 显示全部楼层
@eric2013

昨天调试完串口后,发现图形库卡死的原因了
1,首先是信号板串口不稳定,我把信号板的中断发送数据,改为DMA,丢数问题解决了。
2,发现信号板和F429波特率不匹配。429接收的串口数据,误码问题也解决得了。
3,429的处理数据任务,在等待数据队列的时候,我没用forever,我选择的是0.然后再任务里面增加了一个osDealy(30)的任务挂起等待。

运行了一上午,没发生死机卡死的现象了。

总结就是,一定要把底层驱动调试可靠了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-7 08:18:26 | 显示全部楼层
wxqhit 发表于 2020-4-5 10:36
@eric2013

昨天调试完串口后,发现图形库卡死的原因了

中断改为DMA可用,说明程序里面存在一些更高优先级的中断长时间占用的问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 19:57 , Processed in 0.241085 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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