1539|1

6

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

【在线监测系统的设计】之基于STM32H7B3-DK的TouchGFX触控点... [复制链接]

 


基于STM32H7B3-DK的TouchGFX触控点亮LED

工程链接:

链接已隐藏,如需查看请登录或者注册

提取码:myi1
1 使用TouchGFX Designer生成MDK5工程

开发环境

  TouchGFX软件版本:4.20.0

  MDK5软件版本:5.37.0

  STM32CubeMX软件版本:6.6.1

  开发板:STM32H7B3-DK

  桌面系统:Window10



1.1 产生keil工程模板

为了快速GUI开发,使用TouchGFX生成基于STM32H7B3-DK的MDK5工程模板

打开TouchGFX,点击创建新工程



自动跳转开发板选择界面,按照1-5步骤新建工程,注意不要出现中文路径,不然会出现一些意外错误.



TouchGFX生成工程结构如下,(后续删除EWARM,gcc,STM32CubeIDE等与keil无关的文件夹)



生成的文件夹里面有一个STM32CubeMX的工程文件,由于默认配置中生成的是STM32CubeIDE工程代码,我们需要的是keil工程代码,所以需要切换IDE(除了这点,不改任何配置)



双击.ioc文件,如果出现如下提示,点击Migrate



点击工程管理,IDE选为MDK-ARM,之后点击产生代码



此时,keil工程模板基本建立,但此时如果直接打开keil工程,编译(此处选择V5编译器,因为V6编译器会出现
很多错误)会出现如下问题,是由于TouchGFX没有生成代码,导致确少界面相关源代码



只需要回到TouchGFX,点击产生代码



此时,keil界面会弹出工程变更信息,点击是



再次编译keil工程,无报错,如果有警告,再次编译后可消失,生成.hex文件


打开STM32CubeProgrammer,连接开发板,点击EL,选择外部flash烧录算法



之后点击下载,选择.hex文件,烧录



在开发板已经运行中烧录程序,如果出现如下错误,断开设备重新连接一次再烧录,烧录前出现白屏表示正常




使用由于生成的是空白模板,下载到开发板后为黑屏,此时回到TouchGFX,随便拖拽一个控件到界面,生成代码



之后在keil中编译,再次下载后正常显示



2 keil环境下使用外部烧录脚本(stdlr)烧录QSPI

    在GUI设计中需要大存储空间,这时候我们需要将代码和数据放在外扩的QSPI存储空间,尽可能的使用调试工
具一键烧录工具

软件: keil5,STM32CubeProgrammerv2.10.0


烧录方法

      Keil调试环境下,有两种方式进行外部QSPI存储空间的烧录。一种是基于FLM算法,在keil.BSP包中提供算法。
第二种方法是调用第三方的脚本进行烧录,这里使用ST公司的STM32CubeProgrammer所提供的相应的.stdlr脚本。


设置环境变量

1.打开环境变量设置步骤



2.添加环境变量为STM32_Programmer_CLI.exe所在的安装目录。默认目录如下:



3验证环境变量是否添加成功。打开CMD命令提示符,输入“STM32_Programmer_CLI -version”,显示如下即为设置成功。




Keil下载设置

Keil中,我们采用第三方的工具下载的方式进行下载,步骤如下

1. 配置下载工具如下图所示。最后第三步所填写的命令及参数如下:



    命令中的.\STM32H7B3I-DK\STM32H7B3I-DK.hex是工程生成的Hex文件,需要按照所在的工程进行修改。烧录
脚本stldr的目标也需要对应的按照实际进行修改。STM_Programmmer_CLI.exe会根据STM32H7B3I-DK.hex中的地
址信息决定将代码烧录到哪个地址,所以编译之前,必须在分散加载文件(*.sct)中说明将代码放到外部QSPI Flash的地址范围。



2下载结果

下载完成后按一次复位按钮就可正常显示



3 TouchGFX触控点亮LED

TouchGFX用MVP架构将UI界面,界面逻辑,硬件系统三者分离

View: 负责描述UI界面,比如包含哪些控件、控件如何布局等,Touchgfx Designer软件里的工作就是在构建View
Model: 保存与UI界面有关的数据;有个tick()函数,每秒执行60次,实现与硬件系统交互,相当于硬件与Touchgfx之间的桥梁
Presenter:在Model与View之间起传话筒的作用
System:Touchgfx以外所有的其它部分都属于System的范畴


我们也完全可以在View的点击事件回调函数里直接调用HAL_GPIO_TogglePin函数,但是这样会破坏MVP结构,不推荐这样做。
所以还是按官方的方法,一层一层剥套娃吧。之所以使用MVP架构是为了把代码功能分离开来,增强系统的可移植性和可阅读性。


1. 通过STM32CUBMX配置LED3

2. Touchgfx Designer里放一个按键,并为它添加交互函数btnClicked:



3打开keil,然后在Screen1View中实现btnClicked:





4由于presenter里没有btnClicked这个方法,所以需要为它添加一个:





5、同样,Model里也没有toggleLED方法,依然需要为它添加。





6编译无报错就可下载到开发板

补充说明
V6编译器下编译出错问题

 






 

最新回复

楼主介绍keil环境下使用外部烧录脚本(stdlr)烧录QSPI方法,不错   详情 回复 发表于 2022-8-17 07:28
点赞 关注
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

楼主介绍keil环境下使用外部烧录脚本(stdlr)烧录QSPI方法,不错

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表