[评测分享]
【STM32H735-DK 测评】TouchGFx控制LED亮灭及图标切换
#板卡评测
246117 人阅读
|
0 人回复
|
2024-03-10
TA的每日心情 | 开心 2025-10-22 07:09 |
|---|
签到天数: 590 天 连续签到: 1 天 [LV.9]以坛为家II
状元
- 积分
- 8788
|
本帖最后由 eefocus_3914144 于 2024-3-10 19:35 编辑
【前言】
TouchGFX给用户提供了良好的界面设计,以及M-P-V的交互分享设计系统。这一篇主要介绍如果建立一个使用屏上的按键来实现对开发板上LED的亮与灭,同时同步国标的显示。
【界面设计】
1、在初始化的工程中添加一个toggle button,图标命名为ButOnOff。同时选择两个状态的背景图片,来指示开关的状态。
2、添加两个图片,重叠在一起,来指示灯的状态。
3、给togglebutton添加用户事件,首先新建用户事件,按下图一步一步创建好虚拟函数:
4、创建好界面所重新生成工程,并打开工程:
【代码实现】
我们由屏控制硬件的流程,是基于View->Presenter->Model的编程步骤。控制的函数由screenVide.cpp->Screen1Presenter.cpp->Model.cpp来逐步实现。
1、首先我们在Screen1View.hpp重写按键的函数:
然后在Screen1View.cpp中实现:
- void Screen1View::funButOnOff()
- {
- bool butState;
- butState = ButOnOff.getState(); //获取按键状态
- presenter->setPoolLiget(ButOnOff.getState()); //更新状态
- image_on.setVisible(butState); //更新图标显示与否
- imageOFF.invalidate(); //刷新
- }
复制代码 在funButOnOff中,首先获取按键的状态,然后把参数更新到Presenter中的setPooliget函数。同时更新图标的显示状态,刷新图标,如果不刷新则无效。
2、在Screen1Presenter.hpp,我们声明该函数:
然后在Screen1Presenter.cpp中实现,在这个函数中,我们把按键的状态传递给model的userPooliget。
- void Screen1Presenter::setPoolLiget(bool state)
- {
- model->userPooLiget(state);
- }
复制代码 3、接在model.hpp中声明该函数:
接着我们在mdoel.cpp中实现对灯的控制,首先我们要把按键初始化与相关控件的开发板的文件stm32h735g_discovery.c添加到工程,该文件在\Drivers\BSP\STM32H735G-DK目录下面,我们复制他并粘贴到工程中就行了,同时在model.cpp中引用他。
在model.cpp中添加对LED的控制函数,代码如下:
- void Model::userPooLiget(bool state)
- {
- if(state)
- {
- BSP_LED_On(LED1);
- }
- else
- {
- BSP_LED_Off(LED1);
- }
- }
复制代码 函数中我们通过对按键状态的值来实现对灯的开与关。
当然我们需要在main.c中初始化按键。
这样我们就实现了整个代码的编写。下载到开发板后成功实现了TouchGFX对硬件的实时控制。效果如视频所示。
|
|
|
|
|
|
|
|
|