打印
[STM32F1]

移植STEMWIN,无法控制,求大神指点下

[复制链接]
584|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hclwj181|  楼主 | 2020-5-15 08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近学习EMWIN,学习到一半,开发板上的液晶屏怪了,于是便到淘宝上淘了一个OTM8009的液晶屏。由于接口不对等,于是将FSMC接口控制改成IO模拟控制,液晶能够正常颜色打点以及填充,我都测试过无问题。可是移植完了EMWIN之后,不收控制。使用的是STemWinLibrary532,这个在我的开发板旧液晶上可以正常控制。可是这个新屏,EMWIN里面的函数,却怎么也不受控制,买屏自带的例程函数都是正常。大神分析下会是什么原因

使用特权

评论回复
沙发
hclwj181|  楼主 | 2020-5-15 08:48 | 只看该作者
买的是一个老的野火开发板,以前那款屏,在淘宝上都不到了,主要是EMWIN学到一般,真是老火了啊,求大神指点一二

使用特权

评论回复
板凳
ayb_ice| | 2020-5-15 09:59 | 只看该作者
移植的问题吧,就是没完全移植对

使用特权

评论回复
地板
hclwj181|  楼主 | 2020-5-17 10:56 | 只看该作者
现在程序用GUI_Exec();没问题,可是一执行GUI_Delay(100);就硬件错误,又没碰到这种情况的

使用特权

评论回复
5
liu| | 2020-5-17 11:41 | 只看该作者
SysTick_Handler中有        OS_TimeMS++?

使用特权

评论回复
6
hclwj181|  楼主 | 2020-5-17 14:19 | 只看该作者
liu 发表于 2020-5-17 11:41
SysTick_Handler中有        OS_TimeMS++?

应该是这个问题,在定时器里面加了这个,就没出现了

使用特权

评论回复
7
hclwj181|  楼主 | 2020-5-17 17:23 | 只看该作者
我把以前的EMWIN程序直接搬过来,以前屏是240*320,现在是480*800的,出现了图片的重叠,反正显示的乱七八糟的。单步执行发现,每次执行//GUI_Delay(200);或者GUI_Exec();之后,就出现了重影。什么原因了,求大侠在指点下

使用特权

评论回复
8
hclwj181|  楼主 | 2020-5-17 17:23 | 只看该作者
本帖最后由 hclwj181 于 2020-5-17 17:25 编辑

void emwindemo_task(void *p_arg)
{
        GUI_AUTODEV AutoDev;
        GUI_AUTODEV_INFO AutoDevInfo;
        PARAM  aparam;
        u32 taskcon=1;
        u8 t = 0;
        GUI_HWIN hp;
        float angle1, angle2, angle3;
//        Rotate rotate;                                                        //´Ë½á¹¹Ì彫×÷Ϊ²ÎÊý´«ÈëDrawItº¯ÊýÖÐ
        GUI_SetBkColor(GUI_WHITE);                                //ÉèÖñ³¾°É«Îª°×É«
        GUI_SetColor(GUI_BLACK);                                //ÉèÖÃÑÕɫΪºÚÉ«
        GUI_Clear();
        GUI_AA_EnableHiRes();
        GUI_AA_SetFactor(4);
        GUI_MEMDEV_CreateAuto(&AutoDev);
        
//        BUTTON_CreateEx(250,120,20,30,hp,1,1,ID_BUTTON_0);
//        BUTTON_CreateEx(250,170,20,30,hp,1,1,ID_BUTTON_1);
        while(taskcon)
        {
//                if(getdatetime())                        //´Ë´¦²ÉÓÃRTCÌṩʱ¼ä£¬Ã¿ÃëÖ´ÐÐÒ»´Î
                {
                        t = calendar.sec;                                                
                        angle1 = 2 * (60 - t) * 3.1415926 / 60;                                //ÃëÕëÐýת½Ç¶È£¬Ã¿ÃëÐýת6¶È
                                               angle2 = 2 * (600 - calendar.min * 10 - t / 6) * 3.1415926 / 600;
      if(calendar.hour >= 12)angle3 = 2 * (120 - (calendar.hour - 12) * 10 - calendar.min / 6) * 3.1415926 / 120;
                        else angle3 = 2 * (120 - calendar.hour * 10 - calendar.min / 6) * 3.1415926 / 120;
                                                
                        GUI_RotatePolygon(aparam.arotate.newPoints1, sPoints, 3, angle1);               
                        GUI_RotatePolygon(aparam.arotate.newPoints2, mPoints, 3, angle2);               
                        GUI_RotatePolygon(aparam.arotate.newPoints3, hPoints, 3, angle3);              
                        GUI_MEMDEV_DrawAuto(&AutoDev, &aparam.AutoDevInfo, &DrawIt, &aparam);        
                        sprintf((char *)dttmp,"%04d-%02d-%02d %02d:%02d:%02d\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);
                        GUI_SetBkColor(GUI_WHITE);                     
                        GUI_SetColor(GUI_BLACK);               
                        GUI_SetFont(&GUI_Font16B_ASCII);        
                        GUI_DispStringAt(&dttmp[11],240,60);
                        dttmp[10]=0;
                        GUI_DispStringAt(dttmp,240,30);
                }
                //GUI_Delay(200);
                GUI_Exec();
        }
        GUI_MEMDEV_DeleteAuto(&AutoDev);                                                               
很简单的一个程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

720

帖子

9

粉丝