基于ST STM32 Cortex-M4(STM32F4 or L4) 的码表方案

在单片机系统上实现图形界面,最简单的方法是使用串口屏,但是在体积有限的手持机应用中,串口屏显得有点笨重了,而且板子往往不能适应需求,订做串口屏成本又太高。这就需要使用GUI框架来完成图形界面。在单片机领域的GUI框架有:ucguiSTemWin/emwin)、TouchGFXGuiLiteLittlevGL等。

emwin提供的更多是一些较底层的函数(如:画线、画圆),而且不能拖控件,做出来的界面更接近像素时代的产物。在emwin的开发中,要想显示图片,需要把图片转成bmp格式,再用BmpCvt转成数组,最后才用emwin的函数去调用这个数组,这是比较麻烦的。

TouchGFX都可以很好的解决这些问题,但是只能用于STM32的单片机上。这是因为TouchGFX是ST全资子公司,目前TouchGFX 仅被授权使用在ST芯片上。

2018年7月10日,全球半导体领导者意法半导体(ST)宣布收购TouchGFX软件的开发商和供应商Draupner Graphics,标示着TouchGFX翻开了新的篇章。ST此次收购TouchGFX,旨在为嵌入式应用提供高度先进的GUI解决方案来扩展STM32生态系统。对于双方而言,无疑是双赢的结果。本文章将通过一个成熟的应用,向你展示TouchGFX 强大的魅力,以及STM32做为GUI 设计平台的优势与便利。


工欲善其事,必先利其器。
首先给出开发工具下载地址:
TouchGFX:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/touchgfxdesigner.html

STM32CubeIDE:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html

STM32CubeProgrammer:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stm32cubeprog.html

STM32CubeMX:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

 其次,介绍相关工具及其作用:
TouchGFX:

TouchGFX是为STM32微控制器优化的高级免费图形软件框架。利用STM32的图形功能和架构,TouchGFX通过创建令人惊叹的类似智能手机的图形用户界面,加速了事物的人机界面革命。
TouchGFX框架包括TouchGFX Designer(TouchGFXDesigner),一个易于使用、基于拖放的图形构建PC工具,以及一个强大和优化的图形核心TouchGFX引擎。TouchGFX结合了所见即所得模拟器和自动代码生成,使GUI开发变得简单。它涵盖了从早期设计草图到独家最终产品的所有步骤,通过对成品原型的快速迭代。
TouchGFX Designer是一个独立的软件工具,允许简单和快速的图形评估和概念证明。TouchGFX框架,包括TouchGFX设计器,分布在STM32Cube MCU包中。它与STM32CubeMX初始化和代码生成工具完全兼容,可以在统一的项目环境中无缝地协同开发图形和主应用程序。


STM32CubeIDE:

STM32CubeIDE是一个多操作系统集成开发工具,是STM32Cube软件生态系统的一部分。
STM32 CuBeIDE是一种先进的C/C++开发平台,具有STM32微控制器和微处理器的外围配置、代码生成、代码编译和调试功能。它基于Eclipse®/CDT框架和GCC工具链进行开发,GDB用于调试。它允许集成数百个现有插件,这些插件完成了Eclipse®IDE的功能。
STM32CubeIDE集成了STM32CubeMX的STM32配置和项目创建功能,提供了一体式工具体验,并节省了安装和开发时间。在选择一个空的STM32 MCU或MPU之后,或者从预装配的微控制器或微处理器中选择一个单板或一个实例,创建项目并生成初始化代码。在开发过程中,用户可以随时返回到外围设备或中间件的初始化和配置,重新生成初始化代码,而不会对用户代码产生影响。
STM32CubeIDE包括构建和堆栈分析器,它们为用户提供有关项目状态和内存需求的有用信息。
STM32CubeIDE还包括标准和高级调试功能,包括CPU核心寄存器、存储器和外围寄存器的视图,以及实时变量监视、串行线查看器接口或故障分析器。

主要特点

  • 来自STM32CubeMX的服务集成:
    • STM32单片机、微处理器、开发平台及实例方案选择
    • 引脚、时钟、外围设备和中间件配置
    • 项目创建和初始化代码的生成
    • 软件和中间件由增强的STM32Cube扩展包完成
    • 基于Eclipse®/CDT,支持Eclipse®加载项、GNU C/C++用于ARM®工具链和GDB调试器
  • 其他高级调试功能包括:
    • CPU核心、外围寄存器和内存视图
    • 实时变量监视视图
    • 系统分析和实时跟踪(SWV)
    • CPU故障分析工具
    • 支持ST-LINK(STMicroelectronics)和J-LINK(SEGGER)调试探头
    • 从Atolonic®TrueSTUDIO®和AC6 System Workbench for STM32(SW4SM32)导入项目
    • 多操作系统支持:仅限64位版本的Windows®、Linux®和macOS®




STM32CubeProgrammer:


STM32CubeProgrammer(STM32CubeProgrammer,STM32CubeProgrammer)是一个多操作系统软件工具,用于STM32产品的编程。
它为通过调试接口(JTAG和SWD)和引导加载程序接口(UART、USB DFU、I2C、SPI和CAN)读取、写入和验证设备内存提供了一个易于使用和高效的环境。
STM32CubeProgrammer提供多种功能来编程STM32内部存储器(如Flash、RAM和OTP)以及外部存储器。
STM32CubeProgrammer还允许选项编程和上载、编程内容验证和通过脚本编程实现编程自动化。
STM32CubeProgrammer提供GUI(图形用户界面)和CLI(命令行界面)版本。


STM32CubeMX:

STM32CubeMX是一种图形化工具,它允许对STM32微控制器和微处理器进行非常简单的配置,还可以通过一步一步的过程为Arm®Cortex®-M内核或Arm®Cortex®-a core生成部分Linux®设备树。

第一步包括选择:一个stmicroelectronics STM32微控制器、微处理器或与所需外围设备相匹配的开发平台,或是在特定开发平台上运行的示例。
对于微处理器,第二步允许为整个系统配置GPIO和时钟设置,并以交互方式将外围设备分配给Arm®Cortex®-M或Cortex®A world。特定的实用程序(如DDR配置和调整)使STM32微处理器的入门变得容易。对于Cortex®-M core,配置包括与微控制器描述的步骤完全相似的附加步骤。

对于微控制器和微处理器Arm®Cortex®-M,第二步包括配置每个所需的嵌入式软件,这要归功于pinout冲突解决程序、时钟树设置助手、功耗计算器以及配置外围设备(如GPIO或USART)和中间件堆栈(如USB或TCP/IP)的实用程序。
软件栈和软件栈可以扩展到stm32扩展包。stmicroelectronics或stmicroelectronics的合作伙伴软件包可以直接从STM32CubeMX中提供的专用软件包管理器下载,而其他软件包则可以从本地驱动器安装。
此外,STM32CubeMX交付中的一个独特实用程序STM32PackCreator将帮助开发人员构建自己的增强STM32Cube扩展包。

最终,用户将启动与所选配置选项匹配的生成。此步骤提供了Arm®Cortex®-M的初始化C代码,可以在多个开发环境中使用,或者为Arm®Cortex®-a提供部分Linux®设备树。STM32CubeMX在STM32Cube中交付。

主要特点

  • 直观的STM32微控制器和微处理器选择
  • 丰富易用的图形用户界面,允许配置:
  • 带自动冲突解决的引脚输出
  • Arm®Cortex®-M core的外设和中间件功能模式以及参数约束的动态验证
  • 具有动态配置验证的时钟树
  • 具有估计消耗结果的功率序列
  • 生成符合IAR的初始化C代码项目™,用于Arm®Cortex®-M core的Keil®和STM32CubeIDE(GCC编译器)
  • 为Arm®Cortex®-a核心(STM32微处理器)生成部分Linux®设备树
  • 借助STM32PackCreator开发增强型STM32Cube扩展包
  • 将STM32Cube扩展包集成到项目中
  • 作为独立软件运行在Windows®、Linux®和macOS®(macOS®是Apple Inc.在美国和其他国家/地区注册的商标)操作系统和64位Java运行时环境上的可用性


关此Cortex-M4 系列,ST官方的开发板做的Demo示例非常炫酷,如下测试视频,大家参考借鉴。

下面通过一个简单的例子,展示TouchGFX的强大魅力,借此,你可以很容易的开发对应码表的GUI,我们的客户也是这样做的。

-1.启动界面,工程与参数配置


-2.模板选择


-3.模板信息


-4.工程配置完成界面


-5.设计界面


-6.控件与参数等窗口预览



-7.控件加载与对应关系


-8.字体控件预览


-9.字体控件参数修改


-10.图片窗口参数配置与修改


-11.模拟运行

-11-1.模拟动态运行效果:


-12.下载到目标板运行


-13.运行动态效果,由于视频比较大,大家可以自行测试验证。

-14.代码与调试
源码工程文件在,TouchGFX工程目录下


打开后效果,STM32CubeIDE 是STM32CubeMx+STM32TrueStudio的合成版,如下截图

工程窗口与源代码:


至此一个简单的示例介绍完毕。

STM32CubeMx已经集成在STM32CubeIDE中,就不再详细介绍使用。

下面STM32CubeProgrammer,就是一个上位机烧录软件,可以单独烧录bin or Hex文件到目标板,如下截图:



场景应用图

sceneryUrl

产品实体图

imgUrl