硬汉嵌入式论坛

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

f429+emwin 弹框、抖屏

[复制链接]

16

主题

18

回帖

66

积分

初级会员

积分
66
发表于 2019-9-9 11:22:02 | 显示全部楼层 |阅读模式
int main(void)
{
。。。。
taskENTER_CRITICAL();           //进入临界区
        //创建开始任务
    xTaskCreate((TaskFunction_t )start_task,            //任务函数
                (const char*    )"start_task",          //任务名称
                (uint16_t       )START_STK_SIZE,        //任务堆栈大小
                (void*          )NULL,                  //传递给任务函数的参数
                (UBaseType_t    )START_TASK_PRIO,       //任务优先级
                (TaskHandle_t*  )&StartTask_Handler);   //任务句柄               
  taskEXIT_CRITICAL();            //退出临界区
        vTaskStartScheduler();          //开启任务调度
        。。。。

}

void start_task(void *pvParameters)
{
        。。。。
    xTaskCreate((TaskFunction_t )touch_task,            
                (const char*    )"touch_task",           
                (uint16_t       )TOUCH_STK_SIZE,        
                (void*          )NULL,                  
                (UBaseType_t    )TOUCH_TASK_PRIO,        
                (TaskHandle_t*  )&TouchTask_Handler);          

    //创建EMWIN
    xTaskCreate((TaskFunction_t )emwindemo_task,            
                (const char*    )"emwindemo_task",           
                (uint16_t       )EMWINDEMO_STK_SIZE,        
                (void*          )NULL,                  
                (UBaseType_t    )EMWINDEMO_TASK_PRIO,        
                (TaskHandle_t*  )&EmwindemoTask_Handler);
        。。。。
}

void emwindemo_task(void *pvParameters)
{
        MainTask();
       
        while(1)
        {
                GUI_Delay(1);
        }
}
void touch_task(void *pvParameters)
{
        while(1)
        {
                GUI_TOUCH_Exec();       
                vTaskDelay(10);
        }
}

问题:
1.当emwindemo_task  优先级高于touch_task线程
        登录窗口密码错误,
        弹框提示密码,按OK按钮,死机
2.touch_task  优先级高于当emwindemo_task线程
        弹框,按OK按钮,不死机,但是屏幕会抖动
       
        怎么解决??跪谢

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2019-9-9 11:25:44 | 显示全部楼层
把emWin游标显示出来,看看是不是游标乱跳的现象。

你这个都是基本配置,按说不会有问题的。

问题原因主要两种,硬件问题和软件模板问题
回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2019-9-9 12:33:24 | 显示全部楼层
eric2013 发表于 2019-9-9 11:25
把emWin游标显示出来,看看是不是游标乱跳的现象。

你这个都是基本配置,按说不会有问题的。

确定游标不存在乱跳问题。
周期性的抖动。帮忙分析一下,这个问题困扰我好久了。基本配置如下

void MainTask(void)
{
    int time = 5;

        WM_SetCreateFlags(WM_CF_MEMDEV);       
        GUI_Init();       
       
        /*Enable multi buffer*/
        WM_MULTIBUF_Enable(1);

        /*Enable motion*/
        WM_MOTION_Enable(0);
        /*Set motion period*/
        WM_MOTION_SetDefaultPeriod(500);
。。。。。       
  }

弹框方法:GUI_ExecCreatedDialog
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2019-9-9 15:42:07 | 显示全部楼层
闻鸡起舞 发表于 2019-9-9 12:33
确定游标不存在乱跳问题。
周期性的抖动。帮忙分析一下,这个问题困扰我好久了。基本配置如下

WM_SetCreateFlags(WM_CF_MEMDEV);      

WM_MULTIBUF_Enable(1);

这两个函数二选一即可
回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2019-9-10 13:12:06 | 显示全部楼层
eric2013 发表于 2019-9-9 15:42
WM_SetCreateFlags(WM_CF_MEMDEV);      

WM_MULTIBUF_Enable(1);

WM_MULTIBUF_Enable(1);
我把这个去掉了,确实不抖屏了,但是页面切换有卡顿现象,怎么搞?谢谢了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2019-9-10 15:32:06 | 显示全部楼层
闻鸡起舞 发表于 2019-9-10 13:12
WM_MULTIBUF_Enable(1);
我把这个去掉了,确实不抖屏了,但是页面切换有卡顿现象,怎么搞?谢谢了

界面内容简单些,试试
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 21:23 , Processed in 0.406117 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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