STM32新手?保姆级教程,快速上手(stm32入门教程)
liuian 2025-07-21 15:54 75 浏览
简介:本文面向熟悉STM32但是从未使用过TouchGFX的新手。
通过阅读本教程,你将可以快速上手创建你的第一个TouchGFX项目,并将其移植到你自己的硬件平台上。
说是全网独一份,不过分八
全文导航:(10章)前言、准备工作、软件安装、创建基础项目、为项目添加TouchGFX软件包、设计界面、运行代码、添加触摸支持、移植官方的Demo、结语。
一、前言
TouchGFX是专为STM32系列芯片设计的一个现代的、高性能的、强大的嵌入式图形库。
因为以快速为目标。
本文除了关键点外,不会对教程中的步骤进行过多的讲解,所以需要具有一定的STM32开发基础。
这至少需要你做过图形界面的开发或者对无图形库下的,基于RGB显示屏的应用开发有最基本的概念。
并且需要了解相关的外设如FMC(SDRAM),LTDC,DMA2D的知识。
如果你曾有过LVGL、emWin之类的图形库开发经验,那么在本教程中,这些经验同样会发挥作用。
本教程基于STM32 CubeMX和STM32Cube IDE进行开发,需要对这两个软件有最基本的了解。
如果你习惯使用MDK或IAR,那么也可以使用自己熟悉的IDE来完成本教程。
但是STM32 CubeMX是必须的。
不过,我还是建议使用STM32CubeIDE,毕竟CubeIDE是ST官方的开发环境,拥有最好的兼容性。
二、准备工作
此小节说明了移植TouchGFX的准备工作,包括软硬件的准备,和软件环境的搭建。
1.硬件
①基于STM32 MCU的核心板/开发板一块
- 需要带有LTDC功能的型号(常见型号如F429,F746,H743);
- 核心板需要至少板载1M以上的外部SDRAM(本文中使用基于STM32F429IG核心板,板载SDRAM为IS42S16400QJ-7TLI)。
②RGB接口的显示屏一块
- 推荐分辨率:320x240或480x272;
- 建议选择带触摸的型号(本文使用分辨率为320x240带电阻触摸的LCD屏)。
③ST-Link或者兼容的调试器
- 本文使用ST-Link v2.1。
2.软件
①STM32 CubeIDE(本文中使用的版本:v1.6.1);
②STM32 CubeMX(本文中使用的版本:v6.2.1)CubeMX请预先安装MCU对应的软件包(本文中使用:STM32Cube_FW_F4 V1.26.1);
③独立的TouchGFX软件包,下载地址:STM32 Graphical User Interface - STMicroelectronics (本文中使用:TouchGFX v4.16.1)。
三、软件安装(2步)
1.TouchGFX Designer的安装
解压下载的TouchGFX软件包。
- 进入目录:\Utilities\PC_Software\TouchGFXDesigner;
- 找到:TouchGFX-4.16.1.msi。
双击运行,保持所有的选项默认直接安装即可。
安装完毕后,桌面上应该出现这两个图标。
2.CubeMX中TouchGFX软件包的安装
运行STM32 CubeMX。
在主界面右侧点击 install/remove。
在打开的对话框中,定位至 STMicroelectronis 选项卡。
滚动条往下拉,找到X-CUBE-TOUCHGFX并展开。
然后选中v4.16.1版本前方的方块,点击下方InstallNow安装。
等待安装结束,则准备工作完成。
四、创建基础项目(3步)
1.通过CubeMX创建一个基础项目
通过STM32CubeMX 创建一个可以驱动RGB显示屏的基本工程,配置好必要的外设。
如果可以的话,请顺便添加触摸屏的支持。创建的过程不再赘述。
提示
这一步中请不要为项目添加过多的功能。
只需添加可以驱动你的液晶屏的最少功能即可。
- 一般为RCC,FMC,SDRAM,LTDC和DMA2D;
- 如果有触屏,则可能需要配置SPI或者IIC。
否则出现错误后会增加排查的难度。
切换至Project Mananger,根据下图进心项目配置。
配置完成后,点击右上角“Generate code”生成代码。
等待代码生成完毕,点击关闭对话框。
2.将项目导入至STM32 CubeIDE
启动STM32 CubeIDE。
注意工作空间(Workspace)一定是CubeMX中设置的Project Location。
选择“File” -> "Import"。
选择 “Existing Projects into Workspace”,点击“Next”。
点击Browse,选择刚刚生成的项目。
其他选项保持与下图相同,点击Finish。
3.纠错、测试并运行项目
在左侧Project Explorer中即可看到刚刚导入的项目,展开工程,打开main.c文件。
在User code begin 2区域中,添加SDRAM的初始化代码。
然后编写简单的液晶屏清屏测试代码,用来确认工程配置是否存在错误。
注意!!!
如果生成的代码文件中存在类似XXX CODE BEGIN 和XXX CODE END注释包裹的代码块。
则所有自行编写的代码,都必须放置在这些代码块中。
否则下次点击CubeMX的生成代码按钮时,代码块以外的内容会被删除。
完成后,将开发板通过ST-Link连接至电脑,点击“运行”按钮。
首次运行会弹出运行配置对话框,保持所有选项默认,直接OK确认即可。
- 如果一切配置都正确,则程序会下载至开发板运行,液晶屏此时也应该按照预期显示颜色;
- 如果存在错误,请根据错误提示检查,直至液晶屏可以正常工作。
五、为项目添加TouchGFX软件包(2步)
通过此章节,我们会将TouchGFX软件包添加至我们刚刚创建的项目,并创建一个最基本的用户界面。
1.添加TouchGFX软件包
切换回CubeMX,选择Select Components。
选择TouchGFX,然后点击OK。
在左侧的Software Packs中选择TouchGFX,在右侧勾选Graphics Application启用TouchGFX功能。
2.配置TouchGFX的基本参数
按照图中的说明设置参数,其中的参数的具体功能为:
1、 显示接口的类型,选择LTDC即可;
2、颜色格式,根据实际情况选择,推荐RGB565;
3、TouchGFX的帧缓存策略,此处使用单缓冲即可,暂时不使用双缓冲和部分缓冲;
4、设置缓冲区地址为by address,即固定的缓冲区地址;
5、在SDRAM的LTDC framebuffer之外的空间选择一处空间分配给TouchGFX的帧缓存。需要注意,可用空间必须大于等于LTDC帧缓冲的大小,并且四字节对齐;
6、TouchGFX的时钟源,选择LTDC即可;
7、硬件加速器,如果你选择的MCU有DMA2D,选择即可(如果之前的项目配置中,未启用DMA2D,则需要先配置启用DMA2D);
8、在本教程中,我们暂时不使用OS。
然后我们还有几个关键的功能需要开启,第一个是硬件CRC校验;
第二个是中断管理中的DMA2D和LTDC中断必须开启。
全部设计完成后,我们再次点击“GENERATE CODE”生成代码,生成代码完成后,选择Open Folder。
六、设计界面
进入TouchGFX文件夹,双击运行后缀名为touchgfx.part的文件。
此时,TouchGFX Designer会自动启动。
然后会进入设计器主界面。
我们点击 Add Widgets,随意添加几个控件。
然后点击右上角的 Generate Code,等待代码生成结束。
七、运行代码
代码生成完毕后回到STM32CubeIDE,在右边的工程上点击右键,选择刷新。
然后依然点击运行。
一切正常的话,我们应该可以看到液晶屏上出现了我们刚刚放置的小部件。
至此,我们已经成功完成了TouchGFX的移植。
八、添加触摸支持
接下来,我们要为TouchGFX添加触摸支持。
触摸“支持”需要通过常规的方法,根据你的“开发板”和“液晶屏”的具体“硬件编写”或者“移植触摸屏”驱动。
编写完成后,我们在左侧项目管理器中打开:STM32TouchController.cpp。
在打开的代码文件的init函数中,添加触屏的初始化代码。
然后在sampleTouch函数中添加读取触屏的代码,典型的代码应该如下。
完成代码的编写后,点击运行。
将程序下载至开发板。
此时点击按钮之类的控件。
如果可以看到按压动画,则标志触摸屏支持移植完成。
九、移植官方的Demo
要想学习一个软件库,最好的方法就是参考官方的Demo。
在本章中,我们将移植一个官方的Demo至我们的项目。
导入官方Demo并运行
我们回到TouchGFXDesigner,点击Edit 选择Import。
然后在弹出的对话框中,根据你的液晶屏分辨率,选择一个合适的Example或者Demo。
点击感叹号可以查看此Demo适合的屏幕分辨率:
- 此处选择的是分辨率240x320的Demo。
根据分辨率选择你感兴趣的、合适的Demo。
点击Import,将Demo导入自己的项目中。
注意!!!
请不要选择过于复杂的Demo。
这些Demo通常会因为携带大量的媒体文件,导致片内Flash无法存储,需要外部储存器映射。
此处因为笔者的显示屏分辨率是320x240,而Demo的分辨率是240x320。
所以需要配置一下屏幕旋转。
如果你也需要使用此功能,请在Config中设置。
回到设计器界面,确认配置无误后,依然点击GenerateCode 按钮生成代码。
- 切回STM32CubeIDE;
- 刷新项目后开始运行项目;
- 将代码下载到开发板中。
如果没有错误的话,Demo就可以正常运行了。
结语
至此我们成功地在自己的开发板上运行了TouchGFX,本教程结束。
感谢大家的阅读,如果有什么问题、建议或者发现了教程中的错误,可以直接在评论区提出。
我会尽快响应。
请不要发送私信,因为公开的技术讨论才能帮助所有人。
如果你还想继续深入地研究TouchGFX的运行机理,开发自己的TouchGFX应用,请参考TouchGFX的官方文档:TouchGFX Documentation
相关推荐
-
- 驱动网卡(怎么从新驱动网卡)
-
网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...
-
2026-01-30 00:37 liuian
- win10更新助手装系统(微软win10更新助手)
-
1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...
- windows11专业版密钥最新(windows11专业版激活码永久)
-
Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...
-
- 手机删过的软件恢复(手机删除过的软件怎么恢复)
-
操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...
-
2026-01-29 23:55 liuian
- 一键ghost手动备份系统步骤(一键ghost 备份)
-
步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。 步骤...
- 怎么创建局域网(怎么创建局域网打游戏)
-
1、购买路由器一台。进入路由器把dhcp功能打开 2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。 3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...
- 精灵驱动器官方下载(精灵驱动手机版下载)
-
是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...
- 一键还原系统步骤(一键还原系统有哪些)
-
1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。 2、在弹出的“准备安装”窗口中,可...
- 电脑加速器哪个好(电脑加速器哪款好)
-
我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...
- 任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)
-
是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...
- u盘怎么恢复文件(u盘文件恢复的方法)
-
开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...
- 系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)
-
1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...
-
- 剪贴板权限设置方法(剪贴板访问权限)
-
1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...
-
2026-01-29 21:37 liuian
- 平板系统重装大师(平板重装win系统)
-
如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...
- 联想官网售后服务网点(联想官网售后服务热线)
-
联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...
- 一周热门
-
-
用什么工具在Win中查看8G大的log文件?
-
如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
windows11专业版密钥最新(windows11专业版激活码永久)
-
RK3588-HDMIRX(瑞芯微rk3588芯片手册)
-
tplink无线路由器桥接教程(tplink路由器如何进行无线桥接)
-
用纯Python轻松构建Web UI:Remi 动态更新,实时刷新界面内容
-
R语言 | CNS绘图第1款——linkET万物皆可连
-
都说Feign是RPC,没有侵入性,为什么我的代码越来越像 C++
-
如何在 Ubuntu 命令行中使用 Wireshark 进行抓包?
-
自行部署一款免费高颜值的IT资产管理系统-咖啡壶chemex
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
