STM32F427V系列的触摸屏驱动

提示:本程序主控为STM32F427VGT6,
LCD驱动为ILI9341
触摸驱动为2046


文章目录

  • STM32F427V系列的触摸屏驱动
  • 前言
  • 一、STM32CubeMX LCD配置
    • 1,配置FMC
      • a,选择FMC
      • b,配置为LCD模式
      • c,配置时钟
    • 2,配置TIM作为LCD的专用延时函数
    • 3,LCD程序
  • 二、STM32CubeMX LCD触摸屏配置
    • 1,配置相关IO
      • a,原理图的接口
      • b,IO配置
    • 2,程序
      • a,部分API
      • 2,使用说明
  • 三、程序下载链接

前言

一、STM32CubeMX LCD配置

1,配置FMC

a,选择FMC

b,配置为LCD模式


注:LCD Register Select的选择要根据硬件设计来选择,以下为本例程的LCD接口原理图

c,配置时钟


注:以上数据可达最大刷新率

2,配置TIM作为LCD的专用延时函数

若程序中未添加滴答时钟写的延时函数则可按如下配置

3,LCD程序

到此,LCD配置结束,生成工程,添加lcd.clcd.h,直接调用相关API即可。

部分API函数:
void LCD_Init(void);                                                        //初始化
void LCD_DisplayOn(void);                                                   //开显示
void LCD_DisplayOff(void);                                              //关显示
void LCD_Clear(uint16_t Color);                                     //清屏
void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos);                                       //设置光标
void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t RGB_Code) ;               //画点
void LCD_Fast_DrawPoint(uint16_t x,uint16_t y,uint16_t color);          //快速画点
uint16_t  LCD_ReadPoint(uint16_t x,uint16_t y);                                         //读点
void Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r, uint16_t RGB_Code);                 //画圆
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,uint16_t RGB_Code);            //画线
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t RGB_Code);          //画矩形
void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color);                      //填充单色
void LCD_Color_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t *color);               //填充指定颜色
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t size, uint16_t RGB_Code ,uint16_t back_color);                      //显示一个字符
void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size ,uint16_t RGB_Code,uint16_t back_color); //显示一个数字
void LCD_ShowxNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size, uint16_t RGB_Code,uint16_t back_color);//显示 数字

提示:相关代码在后续附件中

二、STM32CubeMX LCD触摸屏配置

1,配置相关IO

a,原理图的接口

b,IO配置

T_MISOT_PEN 配置为输入模式
T_MOSIT_CST_SCK配置为输出模式

2,程序

添加

到本工程中
stmflash.c用于储存触摸的校验数据

a,部分API

void TP_Write_Byte(uint8_t num);                     //向控制芯片写入一个数据
uint16_t TP_Read_AD(uint8_t CMD);                           //读取AD转换值
uint16_t TP_Read_XOY(uint8_t xy);                           //带滤波的坐标读取(X/Y)
uint8_t TP_Read_XY(uint16_t *x,uint16_t *y);                    //双方向读取(X+Y)
uint8_t TP_Read_XY2(uint16_t *x,uint16_t *y);                   //带加强滤波的双方向坐标读取
void TP_Drow_Touch_Point(uint16_t x,uint16_t y,uint16_t color);//画一个坐标校准点
void TP_Draw_Big_Point(uint16_t x,uint16_t y,uint16_t color);   //画一个大点
void TP_Save_Adjdata(void);                     //保存校准参数
uint8_t TP_Get_Adjdata(void);                       //读取校准参数
void TP_Adjust(void);                           //触摸屏校准
void TP_Adj_Info_Show(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t x3,uint16_t y3,uint16_t fac);//显示校准信息
//电阻屏/电容屏 共用函数
uint8_t TP_Scan(uint8_t tp);                                //扫描
uint8_t TP_Init(void);                              //初始化void Load_Drow_Dialog(void);   //清空屏幕并在右上角显示"Clear"
void rtp_test(void);        //电阻触摸屏测试函数

2,使用说明

在LCD初始化后调用tp_dev.init(); 触摸初始化,然后可以试用rtp_test()触摸测试函数。
也可编写自己的触摸功能函数
例子:

tp_dev.scan(0);          //触摸扫描
if(tp_dev.sta&TP_PRES_DOWN)         //触摸屏被按下
{   if(tp_dev.x[0]<lcd_Width&&tp_dev.y[0]<lcd_height) //判断按下区域是否在显示屏内{if(tp_dev.x[0] > x1 && tp_dev.x[0] < x2 && tp_dev.y[0] > y1 && tp_dev.y[0] < y2)        //判断按下的坐标与目标坐标是否相等{//然后执行相应功能即可}}
}

三、程序下载链接

触摸屏程序

STM32F427V系列的触摸屏驱动相关推荐

  1. 小米linux平板触摸屏驱动安装方法,windows10系统怎样安装触摸屏的驱动

    windows10系统的功能非常强大,但是用户在使用过程中也会遇到一些问题.比如,一位用户想要在电脑中安装触摸屏的驱动,可是不懂得如何操作.这该怎么办呢?接下来,就随小编一起看看windows10系 ...

  2. 全志A64触摸屏驱动调试

    一.前言 linux的触摸屏驱动一般要经历一下几个步骤(以4412为例):1.移植驱动到linux源码"driver/input/touchscreen/"目录下,在Kconfig ...

  3. NUC972触摸屏驱动移植过程分析(二)

    https://blog.csdn.net/b7376811/article/details/86607529 今天继续分析NUC972的触摸屏驱动移植过程,上一节主要分析了触摸屏需要数据,今天来分析 ...

  4. linux 触摸屏驱动分析

    mini2440驱动分析系列之 ---------------------------------------Mini2440触摸屏程序分析 By JeefJiang July,8th,2009 这是 ...

  5. Linux下IIC子系统和触摸屏驱动

    Linux下IIC子系统和触摸屏驱动 1.IIC简介   I2C( Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备. ...

  6. Surface Pro 7安装KaliWindows双系统实战,包括触摸屏驱动安装,以及字体过小,搜狗输入法谷歌浏览器等基础软件安装,以及开启远程桌面等等基础好用的操作

    1.自述: 因为最近做的网络安全项目有点时刻离不开了Linux系统了,一直在抱着我的Surface Pro7使用Windows来远程我服务器上面的Kali Linux系统,在拿着电脑行走的时候,WIF ...

  7. NUC972触摸屏驱动移植过程分析(一)

    https://blog.csdn.net/b7376811/article/details/86514683 因为下一个项目可能会用到触摸屏,所以这段时间对触摸屏的驱动的移植进行了研究,今天正好有机 ...

  8. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  9. WINCE6.0+S3C6410的触摸屏驱动

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  10. linux 触摸屏驱动编写

    早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多.但是随着触摸屏手机.即智能手机的流行,触摸屏基本成了手机的标配.所以,今天可以看看触摸屏驱动在linux上是如何进行的. 1.驱动目录 driv ...

最新文章

  1. sudo brew install mongodb报错
  2. ExtJs之gridPanel的属性表格,编辑表格,表格分页,分组等技巧
  3. ppt结的概念与使用
  4. Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间
  5. 如何实现SAP UI5 Web Component React控件的加载效果
  6. createelement 设置id_还记得你的第一个网络ID是什么吗?
  7. matlab memorySian,matlab内存溢出的解决方案
  8. oracle10g debian,Debian5下oracle10g安装时DISPLAY的设置
  9. 二元函数对xy同时求导_《高等数学》微课视频“二元函数的全微分求积”录音...
  10. android studio 顶部菜单栏消失了如何恢复
  11. mac移除下载镜像的quarantine
  12. QQ抢车位游戏PhysicalDataModel
  13. 北京航空航天大学计算机学院保研率,北京航空航天大学计算机学院(专业学位)计算机技术保研夏令营...
  14. excel表格拆分成多个工作表
  15. 关于部分手机通话录音报start failed的问题
  16. dubbo配置多协议
  17. Java堆空间(Heap Space)
  18. 2021年全球与中国椭圆形板簧行业市场规模及发展前景分析
  19. 什么是搜索词?有什么用?
  20. 【程序23】TestAge.java 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 //问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个

热门文章

  1. 计算机专业能当电子厂技术员,我在一个机械工厂从事电气技术员的工作,谁能告诉..._电气工程师_帮考网...
  2. 【Qt+ OpenGL】实现人体3D显示与控制
  3. java-多线程编程
  4. Case when的用法
  5. 电脑用什么软件可以测试网速吗,在电脑上怎么测试网速_两种快速测试网速的方法介绍 - 驱动管家...
  6. kubuntu18.04 重装显卡驱动后无法进入桌面
  7. 推动区块链基础设施建设,先要破解区块链发展“三高”难题
  8. 网吧流媒体服务器系统,轻松搭建网吧影视服务器 让网速快起来
  9. timestamp显示毫秒_TimeStamp 毫秒和纳秒
  10. java打印模板_怎样做一个word模板,用java调用打印功能