在无RTOS的情况下基于TouchGFX硬件模板上运行项目
在本节,我们将讨论如何基于TouchGFX硬件模板(TouchGFX Desginer中已有的ST开发套件之一),在没有操作系统的情况下运行TouchGFX项目。 本文不针对从STM32CubeMX或STM32CubeIDE开始的定制项目。
从TouchGFX硬件模板启动一个项目
在TouchGFX Designer中提供的大多数TouchGFX硬件模板中,OS FreeRTOS默认是启用的。 如需在没有操作系统的情况下运行,必须遵循几个步骤。 这里我们将以STM32H7B3-DK板的TouchGFX硬件模板为例。
从TouchGFX Designer创建一个项目(使用STM32H7B3-DK硬件模板)并生成代码。
用STM32CubeMX打开提供的
.ioc
文件。在STM32CubeMX界面,导航到“Middleware(中间件)” ->> FreeRTOS设置,并禁用FreeRTOS
打开背光
在大多数TouchGFX硬件模板中,显示屏的背光最初是关闭的。 这样做是为了防止在开发板启动时第一个tick期间出现故障显示。 当第一个帧缓存区在TouchGFXHAL.cpp
中的taskEntry()
函数(位于TouchGFX/target
文件夹下)中就绪时,背光打开。 当在没有操作系统的情况下运行时,taskEntry()
函数永远不会被调用,意味着在帧缓存区仍然正确更新时,显示屏永远不会打开。 解决方案是在启动时打开背光,方法是将LTDC_HSYNC和VSYNC引脚设置为HIGH。
- 导航到系统核心中>的GPIO设置 -> GPIO部分。 查找连接到显示屏背光的引脚,并将GPIO输出电平设置为HIGH。 与STM32H7B3-DK开发板对应的引脚是PA1(用户标签:LCD_BL_CTRL)和PA2(用户标签:LCD_ON/OFF)。
- 从STM32CubeMX生成代码,然后从TouchGFX Designer生成代码。
清除代码
STM32CubeMX和TouchGFX Generator不能清除对RTOS函数的潜在调用,如果它们位于“用户代码”之下。 于是,有必要手动清除代码。 对于STM32H7B3-DK TBS,只需要修改触摸控制器代码。
打开在项目的
TouchGFX/target
文件夹下找到的STM32TouchController.cpp
文件。 手动删除#include <cmsis_os.h>
<cmsis_os.h>和if-语句中的configASSERT(0)
。删除
Core/src
文件夹中的Freertos.c
文件。
要从TouchGFX Designer烧录固件到您的开发板上,需要通过删除或注释与操作系统相关的依赖项和路径来清除Makefile
(在gcc
文件夹下)。 还需要为使用的工具链/IDE清除不同项目中所有与操作系统相关的依赖项和路径。
现在可以在没有操作系统的情况下运行从TouchGFX硬件模板启动的项目。