2845|0

1万

帖子

25

TA的资源

版主

楼主
 

F469Disco的触摸屏例子 [复制链接]

F469Disco开发板也可以用Mbed来使用触摸屏了。的确很简单方便,和F429的使用方法差不多。但是只能支持2点触摸,F746Disco可是可以支持5点触摸的。

  1. #include "mbed.h"
  2. #include "TS_DISCO_F469NI.h"
  3. #include "LCD_DISCO_F469NI.h"

  4. LCD_DISCO_F469NI lcd;
  5. TS_DISCO_F469NI ts;

  6. int main()
  7. {
  8.     TS_StateTypeDef TS_State;
  9.     uint16_t x, y;
  10.     uint8_t text[30];
  11.     uint8_t status;
  12.     uint8_t idx;
  13.     uint8_t cleared = 0;
  14.     uint8_t prev_nb_touches = 0;
  15.   
  16.     BSP_LCD_SetFont(&Font24);
  17.   
  18.     lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE);
  19.     wait(1);
  20.   
  21.     status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
  22.     if (status != TS_OK)
  23.     {
  24.       lcd.Clear(LCD_COLOR_RED);
  25.       lcd.SetBackColor(LCD_COLOR_RED);
  26.       lcd.SetTextColor(LCD_COLOR_WHITE);
  27.       lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE);
  28.     }
  29.     else
  30.     {
  31.       lcd.Clear(LCD_COLOR_GREEN);
  32.       lcd.SetBackColor(LCD_COLOR_GREEN);
  33.       lcd.SetTextColor(LCD_COLOR_WHITE);
  34.       lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE);      
  35.     }

  36.     wait(1);
  37.     lcd.SetBackColor(LCD_COLOR_BLUE);
  38.     lcd.SetTextColor(LCD_COLOR_WHITE);
  39.    
  40.     while(1)
  41.     {
  42.       
  43.       ts.GetState(&TS_State);      
  44.       if (TS_State.touchDetected)
  45.       {
  46.         // Clear lines corresponding to old touches coordinates
  47.         if (TS_State.touchDetected < prev_nb_touches)
  48.         {
  49.           for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++)
  50.           {
  51.             lcd.ClearStringLine(idx);
  52.           }
  53.         }
  54.         prev_nb_touches = TS_State.touchDetected;
  55.         
  56.         cleared = 0;
  57.         
  58.         sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
  59.         lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
  60.         
  61.         for (idx = 0; idx < TS_State.touchDetected; idx++)
  62.         {
  63.           x = TS_State.touchX[idx];
  64.           y = TS_State.touchY[idx];
  65.           sprintf((char*)text, "Touch %d: x=%d y=%d    ", idx+1, x, y);
  66.           lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE);
  67.           lcd.FillCircle(TS_State.touchX[idx], TS_State.touchY[idx], 20);
  68.         }
  69.       }
  70.       else
  71.       {
  72.         if (!cleared)
  73.         {
  74.           lcd.Clear(LCD_COLOR_BLUE);
  75.           sprintf((char*)text, "Touches: 0");
  76.           lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
  77.           cleared = 1;
  78.         }
  79.       }
  80.     }
  81. }
复制代码






  • 完整参考例程
    DISCO-F469NI_LCDTS.7Z (654.62 KB, 下载次数: 7)


此帖出自stm32/stm8论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表