在STM32上移植ucGUI之触摸屏

发布者:数字舞者最新更新时间:2017-09-25 来源: eefocus关键字:STM32  移植ucGUI  触摸屏 手机看文章 扫描二维码
随时随地手机看文章

之前的三篇文章分别介绍了如何在STM32裸机上移植ucGUI,移植ucGUI源例程以及ucGUI的存储设备和抗锯齿。现将STM32裸机上移植ucGUI触摸屏的过程详述如下:

1、  将正点原子的《触摸屏移植实验》中HARDWRAE/TOUCH目录复制到已经建立好的ucGUI工程目录的HARDWARE文件夹下,并添加touch.c文件和头文件路径。

2、  打开ucGUI工程中的GUIConf.h文件,将其中的GUI_SUPPORT_TOUCH和GUI_WINSUPPORT总开关打开。如下所示:


1#define GUI_SUPPORT_TOUCH         1  /* Support a touch screen (req. win-manager) */
2#define GUI_WINSUPPORT            1  /* Window manager package available */


此时编译程序,会出现四个函数未定义的错误。

3、  在GUI_X中添加文件GUI_X_Touch.c,此时编译工程错误消失。

4、  在GUI_X_Touch.c中添加预处理命令#include “touch.h”。然后将其中的GUI_TOUCH_X_MeasureX和GUI_TOUCH_X_MeasureY两个函数改为如下所示的形式:


01int  GUI_TOUCH_X_MeasureX(void) {
02           u16 x,y;
03  Read_ADS2(&x,&y);  
04  return x;
05}
06
07int  GUI_TOUCH_X_MeasureY(void) {
08  u16 x,y;
09  Read_ADS2(&x,&y);
10  return y;
11}


5、  由于是在裸机上运行ucGUI程序,对话框程序会阻塞当前进程的执行。所以需要在定时器中断中不断的去扫描触摸屏的状态。设置定时器10ms中断一次,在定时器中断处理函数中加入GUI_TOUCH_Exec()语句。

6、  在主函数中加入初始化定时器和触摸屏,并在GUI_Init()函数之后加入GUI_CURSOR_Show函数以显示指针。

7、  以上就完成了触摸屏的移植操作,下面对触摸屏的工作状态进行配置。由于我的显示屏是横屏显示,所以我的将GUITouchConf.h文件配置成如下形式:


1#define GUI_TOUCH_AD_LEFT    231
2#define GUI_TOUCH_AD_RIGHT   1834   
3#define GUI_TOUCH_AD_TOP        338
4#define GUI_TOUCH_AD_BOTTOM     1764
5
6#define GUI_TOUCH_SWAP_XY    1
7#define GUI_TOUCH_MIRROR_X   0
8#define GUI_TOUCH_MIRROR_Y   0



      对于使用正点原子STM32 Mini开发板的同学可以试试上面的参数。如果GUI_TOUCH_AD_XXXX这四个参数很重要,配置不合适会出现指针停留在左上角不动,指针跟触摸的位置不同等问题。下面三个参数设置不合适会出现指针移动的方向跟触摸的方向不一致的问题。

   上面四个参数的设置需要读取触摸屏的左上角和右下角的AD采样值来确定。

8、触摸屏的使用需要窗口等回调函数的支持,应首先移植好一个窗口程序之后再将触摸屏移植上去进行验证。


源码详见:http://pan.baidu.com/share/link?shareid=590010509&uk=1208661112


关键字:STM32  移植ucGUI  触摸屏 引用地址:在STM32上移植ucGUI之触摸屏

上一篇:STM32 CAN 过滤器分析小结
下一篇:在STM32上移植ucGUI之WM_REDRAW.c源码分析

推荐阅读最新更新时间:2024-03-16 15:38

使用VSCode搭建STM32开发环境
首先附上一张VS Code图一直都喜欢这种,黑色主题感觉高大上。 一、需要的软件和工具。 下载最新版VS Code: 安装好插件,具有良好的代码补全与调试功能。 “VS Code下载地址:https://code.visualstudio.com/” 下载 LLVM:用于代码补全,其实可以理解为 Clang。因为VS Code 中“C/C++”插件的自动补全功能不太好用。STM32中好多库函数都补全不出来。记得按照好之后,将路径添加到环境变量里。 “LLVM下载地址:http://releases.llvm.org/download.html” 下载安装 Git for Windows: 提供Git支持和MINGW64指令终端
[单片机]
使用VSCode搭建<font color='red'>STM32</font>开发环境
STM32_BKP备份数据
今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): https://yunpan.cn/cP7FTUw4XCYNw 访问密码 0ebe STM32F10x的资料可以在我360云盘下载: https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90 工程概要说明:第一次上电写入BKP一个数据0xA55A,第二次及以后MCU重新上电读取BKP数据就是0xA55A(只要中间没有修改过),软件工程是在每次上电
[单片机]
STM32_BKP备份数据
STM32笔记(五)---中断应用
一、异常类型 1-1 定义说明 F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。其中系统异常有 8 个(如果把 Reset 和 HardFault 也算上的话就是 10 个) ,外部中断有 60个。除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。有关具体的系统异常和外部中断可在标准库文件 stm32f10x.h 这个头文件查询到,在 IRQn_Type 这个结构体里面包含了 F103 系列全部的异常声明。 表格 1 系统异常清单 二、NVIC简介 2-1 定义说明 NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。但是各个芯
[单片机]
<font color='red'>STM32</font>笔记(五)---中断应用
STM32串口发送数据详解
串口的中断方式: /** * @brief Enables or disables the specified USART interrupts. * @param USARTx: where x can be 1 or 2 to select the USART peripheral. * @param USART_IT: specifies the USART interrupt sources to be enabled or disabled. * This parameter can be one of the following values: * @arg USART_IT_WU: Wake up interru
[单片机]
<font color='red'>STM32</font>串口发送数据详解
STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理
以上为GPIO的讲解顺序 在 开发指南第六章有简要的介绍 GPIO口 官方的参考 STM32F4中文参考手册 STM32 F407 的芯片资料 STM32f407 有7组 IO口 1.输入浮空 如果一个IO口 被配制成了浮空输入模式,那么它的 输出驱动器这部分的电路是不工作的。电平从IO口输入后先经过可以配置的上拉下拉 ,然后经过 TTL施密特触发器就会被打开,那么就可以通过输入数据寄存器读取IO口的电平。 2 输入上拉 如果被配置为输入上拉后,如上图所示的上拉电阻会被接到Vdd,输入的电平会被拉倒VDD, 之后经过TTL触发器后到输入数据寄存器,之后被CPU读取 3输入下拉 输入电平被拉低 4 模拟输入
[单片机]
STM32F4 学习 day4 正点原子 第12讲 <font color='red'>STM32</font> GPIO口工作原理
苹果起诉诺基亚:指其触摸屏滚动专利无效
1月21日凌晨消息, 诺基亚 近期在与 苹果 的市场份额大战中频频败北。苹果近日在英国起诉诺基亚,指控诺基亚在触摸屏设备中的一项滚动技术专利无效。 苹果在该项诉讼中称,在诺基亚2010年9月起诉苹果侵犯7项专利的案件中,有一项是无效的。该公司在美国、英国、德国和荷兰接连起诉苹果,指控苹果侵犯其37项专利。 诺基亚发言人称,“诺基亚对于起诉苹果侵犯专利案件中涉及的专利很有信心。我们正在研究平苹果的起诉,并将采取一切措施保护我们的权利。” 此前,苹果在美国和英国起诉诺基亚,指控诺基亚发起这些专利诉讼的目的是迫使苹果交出iPhone相关的技术。
[手机便携]
STM32的ADC获取电池电压
adc.c #include adc.h void Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC1通道时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M //PA4 作为模拟通道输入引脚
[单片机]
存储控制器FSMC与触摸屏介绍
一、FSMC外扩内存SRAM FSMC(Flexible Static Memory Controller,灵活的静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术,使用FSMC外设来管理扩展的存储器。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。FSMC可以用于驱动包括SRAM、NOR FLASH以及NAND FLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器。而在STM32F429系列的控制器中,它具有FMC外设,支持控制SDRAM存储器。 FSMC是STM32系列中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微控制器特有
[单片机]
存储控制器FSMC与<font color='red'>触摸屏</font>介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved