首页 > 评测 > 【STM32U599J-DK测评】屏幕触摸控制LED
【STM32U599J-DK测评】屏幕触摸控制LED
- [导读]
- 在STM32U599J-DK开发板上,有两个用户可以控制的LED: 8864365dd89d1a0a14.png (619.76 KB )下载附件2024-2-27 15:05 上传 这篇分享,结合屏幕,对这两个LED进行控制。 一、TouchGFX界面设计 首先,在TouchG

这篇分享,结合屏幕,对这两个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 宏定义来判断是否处于模拟器模式。如果不加处理,则使用模拟器运行,可能会出错。
三、实际效果:
编写完成后,编译下载,最终效果如下:


-
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前