打印
[STM32H7]

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

[复制链接]
782|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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 | 只看该作者
画面靓丽,反应也挺快。

使用特权

评论回复
5
地瓜patch| | 2024-10-31 18:02 | 只看该作者
Demo图形真漂亮,一看就是专业gui做到的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

41

帖子

0

粉丝