STM32H750 -RT-Thread触摸屏控制一个led灯试验
1. 创建一个bootlader工程
编译bootlader工程后烧写到板子中,用于使用外挂Falsh存储代码时 初始化外挂的Flash、映射物理地址及地址跳转
2. 接下来创建一个demo工程命名mStm32H750V1.1.0
我用的BSP1.1.0版本
3. 从原理图看到使用的I2C1通道,使能打开
4. 配置中添加GT9147驱动、打开TouchGFX库、LCD、C++库,使能相关宏
5. 编译后烧写进板子,串口中看到会死掉,提示硬件错误
6. 通过排查,删掉触摸屏驱动后程序跑起来正常,查代码以及GT9147手册发现
触摸屏规格书写的最大5个点,而代码中初始化触摸屏后,直接读取到info.point_num为10个点,导致后面读屏幕触摸点直接按10个点去读。
解决办法:仍然在STM32TouchController.cpp文件,触摸屏初始化函数中,添加上限判断,如果读到的点数大于5个则就按5个来
6. 修改后重新编译烧写进去板子验证ok,但还有个问题就是坐标跟ui的反了,仍然是在STM32TouchController.cpp文件中,sampleTouch函数中读取点坐标修改如下:
重新编译烧写进去板子验证ok
7. UI上添加一个按钮,来设置板子上LED灯开关
注MVP框架:
# View层负责界面的显示,和界面显示效果的切换
# Model层负责操作底层硬件
# Presenter负责沟通两者,并负责逻辑部分。沟通体现在View接收到用户的输入信息后,不直接调用硬件,而是上报给Presenter,Presenter通知Model,Model最终完成硬件的处理。而View要获得传感器数据等信息,也是通过Presenter来调用Model读取硬件相关信息。而Presenter负责逻辑部分,可以在改变视图的同时不改变逻辑
在TouchGFX工具中添加开关按钮如下,修改需要的命名
8. 我们编译后在RT-Thread Studio中刷新下code,看到MainViewBase中会自动生成如下的代码,该文件为只读,我们修改不了
我们可以看到MainView 继承MainViewBase
8. 因此我们需要在MainView中添加如下,而setLED 方法也是没有的,我们需要进一步补全以下调用逻辑
9. 最后添加完编译后烧写进去板子验证,在触摸屏上点开关,查看串口中输出以及LED灯效果按预期效果