OpenEdv-开源电子网

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

F7《EMWIN实验40 软键盘实验》的疑问

[复制链接]

52

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2012-10-17
在线时间
20 小时
发表于 2017-5-24 09:04:07 | 显示全部楼层 |阅读模式
1金钱
原子哥,您好!
F7《EMWIN实验40 软键盘实验》在main.c中有代码如下:
//EMWINDEMO任务
void emwindemo_task(void *p_arg)
{  
        GUI_CURSOR_Show();
        //更换皮肤
        //BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); //BUTTON不能换肤,换肤后按钮就不能再改变颜色了
        CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
        DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
        FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
        HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
        MENU_SetDefaultSkin(MENU_SKIN_FLEX);
        MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
        PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
        RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
        SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
        SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
        SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);
               
  WM_SetCreateFlags(WM_CF_MEMDEV);
        windows();       
        while(1)
        {
   GUI_Delay(100);
        }
}

//字库更新任务
//KEY_UP键长按2s更新字库
void fontupdata_task(void *pdata)
{
        OS_ERR err;
        while(1)
        {
                if(WK_UP == 1)                                //KEY_UP键按下
                {
                        OSTimeDlyHMSM(0,0,2,0,OS_OPT_TIME_PERIODIC,&err);//延时2s
                        if(WK_UP == 1)                        //还是KEY_UP键
                        {
                                LCD_Clear(WHITE);
                                OSSchedLock(&err);                //调度器上锁
                                LCD_ShowString(10,50,250,30,16,"Font Updataing,Please Wait...");
                                update_font(10,70,16,"0:");//更新字库
                                LCD_Clear(WHITE);
                                POINT_COLOR = RED;
                                LCD_ShowString(10,50,280,30,16,"Font Updata finshed,Please Restart!");
                                OSSchedUnlock(&err);        //调度器解锁
                        }
                }
                OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);//延时10ms
        }
}



我的问题是,为啥void emwindemo_task(void *p_arg)函数里面的延时用的是GUI_Delay(100);       而 void fontupdata_task(void *pdata) 函数利用的延时是OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);//延时10ms
请问他们的区别?
是不是GUI_Delay(100) 这个函数也有任务调度的作用?

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

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-5-24 10:00:45 | 显示全部楼层
GUI_Delay()是emwin自带的,移植的时候也是怼OSTimeDly的简单封装!但是GUI_Delay()不单单是延时,他也会重绘无效化区域!OSTimeDly是UCOS的延时,肯定是会引起任务调度的
回复

使用道具 举报

52

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2012-10-17
在线时间
20 小时
 楼主| 发表于 2017-5-24 10:22:11 | 显示全部楼层
谢了!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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