本帖最后由 jinyi7016 于 2022-8-26 10:00 编辑
@21小跑堂
GUI的最终目的是进行交互,所以,回我们最初的hello world的工程。添加几个用于交互的Button控件,当然其他的控件也是可以的,只是button比较好理解。
这里添加了三个不同类型的button控件,添加完成后进行布局,最后如下图所示:
为Bnt1添加交互。
interaction1由上到下为:触发事件,触发源,动作(调用新的虚函数),函数名,关联触发。
触发事件,触发源,动作都有很多项可以选择,可自行在软件中进行查看。这里选择的是最简单的点击事件。
使用CubeIDE打开工程,找到gui目录,
可以看到gui目录下有四个文件,其中的Model.cpp、Screen1View.cpp、Screen1Presenter.cpp,对应的是TouchGFX中的MVP架构。
首先,刚刚添加的button的调用的虚函数在TouchGFX\generated\gui_generated\src\screen1_screen\Screen1ViewBase.cpp中被定义。
这个文件是Screen1View的基类。一般不进行手动修改,而且文件属性是只读的。
我们可以看到Screen1View继承自Screen1ViewBase,所以,我们只修改Screen1View类就可以了。
所以,我们在子类Screen1View中实现调用的虚函数。
首先在Screen1View.hpp中添加bnt1Clicked函数的声明。
再在Screen1View.cpp文件中,具体实现bnt1Clicked函数。
再在presenter中实现btnClicked方法
再在Model里实现LED的方法
这里使用LD6,也就是PI13引脚,默认生成的工程中,这个引脚并没有进行配置,配置这个引脚的功能。
STM32CubeIDE中打开ico文件,配置GPIO引脚与功能。
重新生成代码。
并在Model实现LED灯翻转的程序。
注意添加头文件main.h,这样才能调用hal库。
程序下载后的运行效果:
|