sujingliang 发表于 2024-9-5 21:07

【STM32H7S78-DK测评】1、TouchGFX控制板载LED

本帖最后由 sujingliang 于 2024-9-6 19:41 编辑

首先,感谢21IC和ST提供这次评测机会。

STM32H7S78-DK是一个非常不错的产品,刚拿到开发板就被精美的开机DEMO惊艳了,真不忍心用自己写的粗鄙的程序将DEMO覆盖。STM32H7S78-DK应该是一个聚集了各种技术的集合体,对开发者的技术要求还是挺高的,所以后面的评测本质也可以说是一个学习的过程。
如果不是有这样一个便利的集成化大屏的开发板,很难想象我会误入TouchGFX领域并产生兴趣,因为TouchGFX开发好像将传统的MCU引向了另一个领域。

好吧,开始了:
   

一、先简单地搭建开发环境
少走弯路,建议安装以下工具:
1、STM32CubeIDE 1.16.0
2、STM32CubeMX 6.12.0
3、TouchGFX Designer 4.24.0

CubeMX 用于搭建配置,TouchGFX Designer 用于屏幕驱动,CubeIDE用于编写程序,编译烧写。
这方面资料还是比较多,具体步骤略。

不推荐用KEIL编译,可能是对KEIL支持的不好吧,也可能自己理解不到位,个人遇到两个问题:
1、TouchGFX Designer生成的code中缺失两个静态库:nemagfx_core_release-wchar16.lib、touchgfxnema_release-wchar16.lib。编译会出错。
2、从TouchGFX Designer目录中找到这两个lib放入工程中,也编译成功了,但烧写后不工作。

所以建议用CubeIDE,也可以用ToucGFX Designer编译烧录,本质都是arm gcc交叉编译。

关于TouchGFX Designer的安装:

1、通过CubeMX安装X-CUBE-TOUCHGFX
路径:help->Embedded Software Packages Manager->X-CUBE-TOUCHGFX->4.24.0
安装后,在C:/Users/xxxx/STM32Cube/Repository/Packs/STMicroelectronics会多出一个X-CUBE-TOUCHGFX目录

2、进入X-CUBE-TOUCHGFX/4.24.0/Utilities/PC_Software/TouchGFXDesigner
运行其中的ToucGFX Designer安装程序:TouchGFX-4.24.0.msi

二、TouchGFX控制硬件LED闪烁

1、TouchGFX新建工程

Examples->Select Board Setup,然后搜STM32H7S78-DK


例子中选择最简单的Blank UI,然后生成新的工程。

放置一些部件


增加一个Interaction1,其中Action 选择 Call new virtual function,将function Name命名为ledToggle

ledToggle函数将由Screen1ViewBase的成员函数实现。

然后F4生成代码,可以用STM32CubeIDE或其他工具编辑,也可用STM32CubeMX继续做其他资源配置。

2、手工修改部分

打开appli/touchgfx/generated/gui_generated/src/screen1_screen/screen1viewbase.cpp,可以看到其中buttonCallbackHandler已经有了对ledToggle()的调用。在Screen1ViewBase中ledToggle()是个虚函数。
void Screen1ViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
{
    if (&src == &toggleButton1)
    {
      //Interaction1
      //When toggleButton1 clicked call virtual function
      //Call ledToggle
      ledToggle();
    }
}


在gui/screen1view.cpp中增加:
#include "main.h"

void Screen1View::ledToggle()
{
      HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);

}
并在gui/screen1view.hpp中增加void ledToggle()成员函数的定义,这个函数继承自Screen1ViewBase。
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP

#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>

class Screen1View : public Screen1ViewBase
{
public:
    Screen1View();
    virtual ~Screen1View() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
                void ledToggle();
protected:
};

#endif // SCREEN1VIEW_HPP
3、当然还需要用STM32CubeMX对LD1(PO1)进行配置

这部分略。

三、效果




四、总结
1、TouchGFX 部分的程序用的是C++。
2、TouchGFX 生成的程序中,主要可以修改的部分在gui下。为了简单本文没有严格按照MVP架构编写。






chenjun89 发表于 2024-9-6 08:09

ST的型号不得不说真多,又出了个H7S系列。

Amazingxixixi 发表于 2024-10-31 16:03

非常详细的教程,

suncat0504 发表于 2024-10-31 17:07

画面靓丽,反应也挺快。

地瓜patch 发表于 2024-10-31 18:02

Demo图形真漂亮,一看就是专业gui做到的
页: [1]
查看完整版本: 【STM32H7S78-DK测评】1、TouchGFX控制板载LED