打印
[STM32U5]

【STM32U599J-DK测评】屏幕触摸控制LED

[复制链接]
874|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在STM32U599J-DK开发板上,有两个用户可以控制的LED:


这篇分享,结合屏幕,对这两个LED进行控制。

一、TouchGFX界面设计
首先,在TouchGFX中,新建一个项目:


并选择对应的开发板:


然后,准备一张背景图片:

图片大小为480x480的,对应屏幕大小。


在TouchGFX中,进入到Images管理,添加图片:


然后,在Screen界面,添加这个图片做为背景图:


再添加两个按钮,用于控制两个LED:


再给两个按钮,都设置好点击调用:



设计过程中,随时可以点击右下角中间的按钮,进行模拟测试:



设计完成后,点击右下角的左边,生成代码:


然后,点击左则的 Files,即可打开生成后的代码和项目目录:


项目目录如下:


其中包含了STM32CubeIDE和Keil等编辑器的项目文件。

二、代码编写
我使用STM32CubeIDE进行开发,直接进入下面的目录打开即可:


TouchGFX采用了类似MVC的MVP开发模式:


生成的界面处理部分代码,和我们逻辑功能部分的代码,是分离的。
通过这样的方式,界面可以继续修改,不对我们实际逻辑处理的代码产生影响。

在生成的Screen1ViewBase.cpp文件中,有界面处理的实际代码:


在这个文件的头部,提示了,不要修改这个文件。除非,后续不再使用TouchGFX进一步修改设计了。

上述代码中,包含了按键调用的设置:
toggleButton_red.setAction(buttonCallback);

toggleButton_green.setAction(buttonCallback);


点击后,调用该文件中定义的回调:
void Screen1ViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
{
    if (&src == &toggleButton_green)
    {
        //Interaction_green
        //When toggleButton_green clicked call virtual function
        //Call ToggleLED_green
        ToggleLED_green();
    }
    if (&src == &toggleButton_red)
    {
        //Interaction_red
        //When toggleButton_red clicked call virtual function
        //Call ToggleLED_red
        ToggleLED_red();
    }
}
在该回调中,通过判断点击来源,确定调用具体的处理逻辑函数。

根据界面的设置,需要在Screen1View.hpp中生命对应的逻辑处理函数:


然后在Screen1View.cpp中,编写具体的实现:
#include <gui/screen1_screen/Screen1View.hpp>
#ifndef SIMULATOR
#include "stm32u5xx_hal.h"
#endif

Screen1View::Screen1View()
{

}

void Screen1View::setupScreen()
{
    Screen1ViewBase::setupScreen();
}

void Screen1View::tearDownScreen()
{
    Screen1ViewBase::tearDownScreen();
}

void Screen1View::ToggleLED_green()
{
#ifndef SIMULATOR
    if(toggleButton_green.getState())
    {
        HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_RESET);//LD2蓝灯亮


在上述代码中,使用了 SIMULATOR 宏定义来判断是否处于模拟器模式。如果不加处理,则使用模拟器运行,可能会出错。

三、实际效果:
编写完成后,编译下载,最终效果如下:



6433465dd89b86c428.png (641.86 KB )

6433465dd89b86c428.png

5800665dd8a3751b37.png (619.76 KB )

5800665dd8a3751b37.png

887365dd8ad33501f.png (271.3 KB )

887365dd8ad33501f.png

使用特权

评论回复
沙发
vivilyly| | 2024-2-27 23:39 | 只看该作者
使用的是touchgfx吗?         

使用特权

评论回复
板凳
vivilyly| | 2024-2-28 23:36 | 只看该作者
是否可以移植lvgl做gui设计?   

使用特权

评论回复
地板
狄克爱老虎油| | 2024-2-29 18:35 | 只看该作者
这个屏幕很帅

使用特权

评论回复
5
HonestQiao|  楼主 | 2024-2-29 18:54 | 只看该作者
vivilyly 发表于 2024-2-28 23:36
是否可以移植lvgl做gui设计?

使用的是TouchGFX.


LVGL好像不一定行,没试过。

使用特权

评论回复
6
Henryko| | 2024-2-29 22:09 | 只看该作者
应该可以移植lvgl的

使用特权

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

本版积分规则

37

主题

91

帖子

2

粉丝