本帖最后由 FuShenxiao 于 2024-9-17 17:34 编辑
非常感谢EEWORLD和ST提供的测评机会。这块开发板搭载的STM32H7S7L8是一颗相当高性能的MCU,这块板子的做工也是十分精美。大家可以观看b站的介绍视频,无论是计算性能还是图形显示能力都是相当厉害的【新品速递】STM32H7R/S高性能MCU:高安全性,大存储和优异图显_哔哩哔哩_bilibili
作为ST官方的Discovery系列开发板,TouchGFX在这上面的开发就显得轻而易举了。
软件准备:
TouchGFX Designer(这个在官网下载最新版本,里面才有STM32H7S78-DK的模板)
STM32CubeIDE(须安装好STM32H7RS的芯片固件包,不选用MDK-ARM可能是不太适配,试了好久总是缺文件,而CubeIDE就能正常编译)
STM32CubeMX(须安装好STM32H7RS的芯片固件包)
在TouchGFX中绘制UI
在TouchGFX中选择对应的开发板
绘制UI,包括标题与四个控制按键。四个按键用于控制板载LD1-LD4四个用户自定义灯。
分别配置四个按键的反转触发。配置完成后点击屏幕右下角的代码生成即可生成代码。
生成文件目录如下
在CubeIDE中烧录
选择生成的STM32CubeIDE文件夹下的工程,对生成的代码进行编译和烧录,即可在开发板的屏幕上观察到在TouchGFX中绘制的画面。
配置用户灯
观察开发板原理图可以发现,LD1和LD2为高电平点亮,而LD3和LD4为低电平点亮。
进入CubeMX进行引脚配置
TouchGFX按键代码编写
进入STM32H7S78-DK_Appli/Application/User/generated/Screen1ViewBase.cpp,可以看到已经有了对于反转LED灯的函数调用,此处的四个ledToggle()均为虚函数。
void Screen1ViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
{
if (&src == &toggleButton1)
{
//Interaction1
//When toggleButton1 clicked call virtual function
//Call led1Toggle
led1Toggle();
}
if (&src == &toggleButton2)
{
//Interaction2
//When toggleButton2 clicked call virtual function
//Call led2Toggle
led2Toggle();
}
if (&src == &toggleButton3)
{
//Interaction3
//When toggleButton3 clicked call virtual function
//Call led3Toggle
led3Toggle();
}
if (&src == &toggleButton4)
{
//Interaction4
//When toggleButton4 clicked call virtual function
//Call led4Toggle
led4Toggle();
}
}
进入gui/Screen1View.cpp,添加以下代码
#include "main.h"
void Screen1View::led1Toggle()
{
HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
}
void Screen1View::led2Toggle()
{
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
}
void Screen1View::led3Toggle()
{
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
}
void Screen1View::led4Toggle()
{
HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_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 led1Toggle();
void led2Toggle();
void led3Toggle();
void led4Toggle();
protected:
};
#endif // SCREEN1VIEW_HPP
再次编译烧录,即可实现用TouchGFX按键控制用户灯亮灭。
5434A826C7A8283619A0016B7A57C65A
工程源代码:
https://download.eeworld.com.cn/detail/FuShenxiao/634343