首页 > 评测 > 【STM32U599J-DK测评】屏幕触摸控制LED
【STM32U599J-DK测评】屏幕触摸控制LED
- [导读]
- 在STM32U599J-DK开发板上,有两个用户可以控制的LED: 8864365dd89d1a0a14.png (619.76 KB )下载附件2024-2-27 15:05 上传 这篇分享,结合屏幕,对这两个LED进行控制。 一、TouchGFX界面设计 首先,在TouchG
在STM32U599J-DK开发板上,有两个用户可以控制的LED:
这篇分享,结合屏幕,对这两个LED进行控制。
一、TouchGFX界面设计
首先,在TouchGFX中,新建一个项目:
并选择对应的开发板:
然后,准备一张背景图片:
图片大小为480x480的,对应屏幕大小。
在TouchGFX中,进入到Images管理,添加图片:
然后,在Screen界面,添加这个图片做为背景图:
再添加两个按钮,用于控制两个LED:
再给两个按钮,都设置好点击调用:
设计过程中,随时可以点击右下角中间的按钮,进行模拟测试:
设计完成后,点击右下角的左边,生成代码:
然后,点击左则的 Files,即可打开生成后的代码和项目目录:
项目目录如下:
其中包含了STM32CubeIDE和Keil等编辑器的项目文件。
二、代码编写
我使用STM32CubeIDE进行开发,直接进入下面的目录打开即可:
TouchGFX采用了类似MVC的MVP开发模式:
生成的界面处理部分代码,和我们逻辑功能部分的代码,是分离的。
通过这样的方式,界面可以继续修改,不对我们实际逻辑处理的代码产生影响。
在生成的Screen1ViewBase.cpp文件中,有界面处理的实际代码:
在这个文件的头部,提示了,不要修改这个文件。除非,后续不再使用TouchGFX进一步修改设计了。
上述代码中,包含了按键调用的设置:
复制代码
点击后,调用该文件中定义的回调:
复制代码在该回调中,通过判断点击来源,确定调用具体的处理逻辑函数。
根据界面的设置,需要在Screen1View.hpp中生命对应的逻辑处理函数:
然后在Screen1View.cpp中,编写具体的实现:
复制代码
在上述代码中,使用了 SIMULATOR 宏定义来判断是否处于模拟器模式。如果不加处理,则使用模拟器运行,可能会出错。
三、实际效果:
编写完成后,编译下载,最终效果如下:
这篇分享,结合屏幕,对这两个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
- 我要投稿
-
欢迎入驻,开放投稿
行业新闻
-
RAK831 Lite:基于树莓派3的LoRa网关... 2022-06-17
-
Imagination推出PowerVR AX2185和AX2145神经... 2022-06-17
-
ODROID-GO是一款兼容Arduino的基于ESP32的便... 2022-06-17
项目外包
more+
- PID温度控制器
预算:¥700003天前
- 摄像头的可视画面需要一直超上(linux系统,ARM)
预算:¥1000018小时前
- DICOM协议搭建(ARM架构,linux系统)
预算:¥1000017小时前
- 需MIPI摄像头隔离电路,实现3-4米能长距离
预算:¥1000017小时前
- 膨宫仪的控制板,控制流量和检测压力
预算:¥1000016分钟前
- 无创自动测量血压计 NIBP模块
预算:¥100007小时前