扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

STM32N6的开发日记(9):TouchGFX让单片机轻松一键部署GUI

03/25 10:06
341
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

前面我们介绍了在STM32N6中使用LTDC进行屏幕显示的基本操作,屏幕能显示图片到更好的做UI界面,这中间离不开GUI库的嵌入。

常见的嵌入式GUI库中最为出名的应该要属LVGL(Light and Versatile Graphics Library),一个轻量级免费的开源GUI库。

可要论和ST系列的单片机最为适配的GUI库,那么我肯定是首推ST的TouchGFX这个GUI库。

本期我们就来介绍如何利用TouchGFX来一键式无痛进行STM32N6的GUI开发。

1、环境安装

首先要使用TouchGFX我们需要安装TouchGFX的软件工具,在官网找TouchGFX的下载链接后,找到其中的上位机软件:

安装完成后即可使用TouchGFX。

2、创建工程

在TouchGFX中创建一个新的工程,找到STM32N6的Demo工程,点击创建,其中一个是基于ThreadX的另一个是基于FreeRTOS的基础工程,博主熟悉点FreeRTOS,这里我们创建FreeRTOS的工程。

空白工程界面如图所示,这个工程是已经配置好了LTDC和屏幕触摸了,并且支持一键编译烧录功能。

中间正上方是控件区,我们可以在这里放入我们的控件和自定义控件。

右上方是属性区,可以配置控件属性和交互行为配置。

左边是资源管理、控件管理和菜单栏。

右下角三个按钮分别是生成代码,PC端模拟器运行和编译烧录到单片机。

3、PC端测试到单片机验证

我们在设计界面放入一个Video视频控件,放入官方的示例一个800*480的视频,接着在PC端点击模拟:

烧录到开发板之前,我们首先要让开发板进入开发者模式:

将BOOT1设置为高电平上电后进入开发者模式,之后点击烧录代码:

4、交互功能

如图我们创建一个白色的背景、一个动态波形图、按钮和标签。

为整个波形图添加网格线。

在交互界面添加一个功能,按键按下的交互,当案件按下的时候调用Addpoint这个函数。

接着找到我们的工程代码,进入STM32CubeIDE工程。

屏幕1的工程文件是这两个:Screen1View.cpp为我们主要操作的文件。

我们先查看Screen1View在这个屏幕类的定义,跳转到Screen1View.hpp文件中。

我们可以看到这个类是继承自Screen1ViewBase的父类的,我们再跳转到这个父类查看定义。

在这个父类中,我们可以看到我们刚才添加的交互函数在这里有着虚函数定义,这个在Screen1View中被继承,由于我们要在Screen1View中完成具体实现,因此我们在Screen1View中进行完整定义。

#ifndef SCREEN1VIEW_HPP#define SCREEN1VIEW_HPP#include<gui_generated/screen1_screen/Screen1ViewBase.hpp>#include<gui/screen1_screen/Screen1Presenter.hpp>classScreen1View :public Screen1ViewBase{public:    Screen1View();    virtual ~Screen1View() {}    virtualvoidsetupScreen();    virtualvoidtearDownScreen();    voidAddpoint();protected:};#endif// SCREEN1VIEW_HPP

在hpp文件中添加addpoint()的定义,之后在cpp文件中完成addpoint()函数的逻辑完成。

#include<gui/screen1_screen/Screen1View.hpp>#include"math.h"Screen1View::Screen1View(){
}voidScreen1View::setupScreen(){    Screen1ViewBase::setupScreen();    dynamicGraph1.clear();}voidScreen1View::tearDownScreen(){    Screen1ViewBase::tearDownScreen();}voidScreen1View::Addpoint(){  staticfloat x = 0;  float y = abs(sin(x));  x+=0.1;  dynamicGraph1.addDataPoint(y*30);}

在进入界面的时候,屏幕将清空动态波形图的内容,之后点击按钮触发回调,添加一个正弦波形。

相关推荐