跳转到主要内容

在无RTOS的情况下基于TouchGFX硬件模板上运行项目

在本节,我们将讨论如何基于TouchGFX硬件模板(TouchGFX Desginer中已有的ST开发套件之一),在没有操作系统的情况下运行TouchGFX项目。 本文不针对从STM32CubeMX或STM32CubeIDE开始的定制项目。

从TouchGFX硬件模板启动一个项目

在TouchGFX Designer中提供的大多数TouchGFX硬件模板中,OS FreeRTOS默认是启用的。 如需在没有操作系统的情况下运行,必须遵循几个步骤。 这里我们将以STM32H7B3-DK板的TouchGFX硬件模板为例。

  1. 从TouchGFX Designer创建一个项目(使用STM32H7B3-DK硬件模板)并生成代码。

  2. 用STM32CubeMX打开提供的.ioc文件。

  3. 在STM32CubeMX界面,导航到“Middleware(中间件)” ->> FreeRTOS设置,并禁用FreeRTOS

STM32CubeMX中STM32H7B3-DK板的FreeRTOS设置

打开背光

在大多数TouchGFX硬件模板中,显示屏的背光最初是关闭的。 这样做是为了防止在开发板启动时第一个tick期间出现故障显示。 当第一个帧缓存区在TouchGFXHAL.cpp中的taskEntry()函数(位于TouchGFX/target文件夹下)中就绪时,背光打开。 当在没有操作系统的情况下运行时,taskEntry()函数永远不会被调用,意味着在帧缓存区仍然正确更新时,显示屏永远不会打开。 解决方案是在启动时打开背光,方法是将LTDC_HSYNC和VSYNC引脚设置为HIGH

  1. 导航到系统核心中>的GPIO设置 -> GPIO部分。 查找连接到显示屏背光的引脚,并将GPIO输出电平设置为HIGH。 与STM32H7B3-DK开发板对应的引脚是PA1(用户标签:LCD_BL_CTRL)和PA2(用户标签:LCD_ON/OFF)。

STM32H7B3-DK开发板打开背光

  1. 从STM32CubeMX生成代码,然后从TouchGFX Designer生成代码。

清除代码

STM32CubeMX和TouchGFX Generator不能清除对RTOS函数的潜在调用,如果它们位于“用户代码”之下。 于是,有必要手动清除代码。 对于STM32H7B3-DK TBS,只需要修改触摸控制器代码。

  1. 打开在项目的TouchGFX/target文件夹下找到的STM32TouchController.cpp文件。 手动删除#include <cmsis_os.h><cmsis_os.h>和if-语句中的configASSERT(0)

  2. 删除Core/src文件夹中的Freertos.c文件。

要从TouchGFX Designer烧录固件到您的开发板上,需要通过删除或注释与操作系统相关的依赖项和路径来清除Makefile(在gcc文件夹下)。 还需要为使用的工具链/IDE清除不同项目中所有与操作系统相关的依赖项和路径。

现在可以在没有操作系统的情况下运行从TouchGFX硬件模板启动的项目。