实验平台:
硬件:STM32U599J-DK
软件:STM32Cube_FW_U5_V1.3.0,touchGFXDesigner v4.22.1和stm32CubeIDE1.13.2
实验前准备:
- STM32U599J-DK
- 安装好touchGFX
- 安装好stm32cubeIDE
使用TouchGFX MVP来实现和硬件的交互:
mvp的全称为Model-View-Presenter,Model提供数据,View负责显示,controller/Presenter负责逻辑的处理。
用一句话来概括:所有数据仅能保存在Model的类对象(简单说就是一种文件)中,Presenter是视图(View)与Model之间的纽带,View只能通过Presenter来读取数据。
MVP的优点:
模型与视图分离,我们可以修改视图而不影响模型;
可以更高效的使用模型,因为所有的交互都发生在一个地方——presenter内部。
我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
【实现步步骤】
- 用touchGFX Designer新建一个stm32u599的空白工程,项目命名为MyLed
- 在屏幕上添加一个按键与二个图片,图片显示LED灯的状态,按键用于控制GUI上的圆与板载的LED灯的开关。
3、添加开关按键的事件:
【代码实现】
1、打开stm32cubeIDE工程
2、我们添加GUI对硬件的控制,遵循是View->Persenter->Model。所以我们先在screen1View.hpp上新建一个虚拟函数:
3、然后在screen1View.cpp中实现它,函数实现的功能是将按键的状态传给persenter。然后根据状态让亮灯与熄灯的图片显示与否。
- 4、在screen1persenter.hpp中添加set_light_onoff函数,并在screen1persenter.cpp中实现它。
-
- 最后我们在model.hpp中声明set-light_onoff函数,并在model.cpp中引用main.h,实现对板载LED灯的控制:
最后我修编译下载到开发板就实现对点击屏幕的按键,实现对板载LED灯的控制,同时也看到屏幕的图片实时显示了。
附视频讲解: