OpenEdv-开源电子网

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

EMWIN移植 button触摸按钮无效

[复制链接]

5

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2018-4-6
在线时间
93 小时
发表于 2018-9-17 21:02:05 | 显示全部楼层 |阅读模式
1金钱
这几天移植emwin,裸机移植。移植成功,位图、文本等均显示正常,但触摸按键时根据官方示例代码,在硬件上下载会卡死在GUI_WiatKey()这个函数里面。

主函数:
static void _DemoButton(void) {
  BUTTON_Handle hButton;
  int val = 0;
  GUI_SetFont(&GUI_Font8x16);
  GUI_DispStringHCenterAt("Click on button...", 160, 90);
  //
  // Create the button and set text
  //
  hButton = BUTTON_Create(110, 110, 100, 40, GUI_ID_OK, WM_CF_SHOW);
    WM_Paint(huwin);
  BUTTON_SetText(hButton, "Click me...");
  //
  // Let window manager handle the button
  //
   val = GUI_WaitKey();   //没有返回值,移植卡在这里,但触摸点正常,开启CRC时钟
    printf("ok\r\n");
  while (val != GUI_ID_OK)
  {
      printf("GUI_WAITKEY() = %d\r\n",val);
      val = GUI_WaitKey();
  }
  //
  // Delete the button
  //
  BUTTON_Delete(hButton);
  GUI_ClearRect(0, 50, 319, 239);
  GUI_Delay(1000);
}

int main(void)
{  
   
    //PROGBAR_Handle ahProgBar[2];
    RCC->AHB1ENR |= 1 << 12;    //使能CRC时钟  
    //SystemInit();
    MYNVIC_SetProprity(5,0,0,USART1_IRQn);
    MYNVIC_SetProprity(5,0,1,TIM7_IRQn);
    MYNVIC_SetProprity(5,0,2,TIM6_DAC_IRQn);
    Delay_init(168);
    Usart1_Init(115200, 84);
    TIM7_IRQ_Init();                               //1ms定时,提供给emwin的时钟
    Tim6_Init();
   
    AT24C02_Init();
    TFTLCD_Init();
    TP_Init();
    key_Init();
    FSMC_SRAM_Init();            //初始化外部SRAM
    my_mem_init(SRAMIN);        //初始化内部内存池
    my_mem_init(SRAMEX);        //初始化外部内存池
    my_mem_init(SRAMCCM);        //初始化CCM内存池
//    WM_SetCreateFlags(WM_CF_MEMDEV);
//    GUI_Init();
//    GUIDEMO_Main();
   
    GUI_Init();
    _DemoButton();         //运行官方的示例代码,调试卡在
GUI_WaitKey()
    while(1)
    {
        
    }
   
}



在TP_Read_XOY()函数中打印调试信息,只要有触摸按下就打印触摸点信息,串口也能正常显示该点的x,y原始数据。





是按照原子哥的例程来的,也移植了触摸屏函数。不知道问题出现在哪,特来寻求帮助





最佳答案

查看完整内容[请看2#楼]

问题解决: 没有在LCD_X_Config()函数 中添加 GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3950,400); GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3920,260);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2018-4-6
在线时间
93 小时
 楼主| 发表于 2018-9-17 21:02:06 | 显示全部楼层
问题解决:
没有在LCD_X_Config()函数 中添加
        GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
        GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3950,400);
        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3920,260);
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-9-18 01:40:58 | 显示全部楼层
帮顶
回复

使用道具 举报

5

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2018-4-6
在线时间
93 小时
 楼主| 发表于 2018-9-18 22:13:27 | 显示全部楼层
不过现在有时候会在GUI_WaitKey()中进入hardfault
回复

使用道具 举报

5

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2018-4-6
在线时间
93 小时
 楼主| 发表于 2018-9-19 09:15:46 | 显示全部楼层
结贴:在使用触摸检测的定时器中断函数使用10ms有时会进入hardfault,但把定时器的时间改成1ms则正常运行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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