当我在项目中添加超过 65 个屏幕时,Keil 项目显示错误(在少于或等于 65 个屏幕时工作正常)。我通过创建多个新项目多次检查了这一点,甚至多个版本的 cubemx 和 touchgfx 设计师仍然没有运气。我已经尝试了 cubemx 5.3、cubemx 5.6、cube mx 6.0,基本上从 5.3 开始的每个版本。我什至尝试了从 4.10 到 4.15 的不同 touchgfx 设计器。当我为
STM32cubeIDE 创建超过 65 个屏幕的同一个项目时,它工作得很好。
这是我遵循的程序
- 打开 touchGFX 设计器
- 选择我的板子STM32F469i-DISCO和Blank ui
- 添加66个屏幕和2-3个按钮
- 生成项目
- 打开工程的cubemx文件,选择MDK ARM 5.28.0.0 Keil IDE,为keil生成工程
- 在keil中打开工程
- 在属于 touchgfx 框架而非用户文件的 meta.h 文件中编译错误
如果按照上述步骤进行小于或等于 65 个屏幕,它工作正常。一切都适用于 STM32CubeIDE 甚至 66+ 屏幕
您可以按照上述步骤轻松重现此错误
../middlewares/st/touchgfx/framework/include/common/Meta.hpp(90): 错误: #456: 实例化类 "touchgfx::meta::select_type_maxsize
>>"
struct select_type_maxsize > : public type_max::类型>
检测期间:
实例化类“touchgfx::meta::select_type_maxsize> [with First=Screen64View, Next=touchgfx::meta::TypeList>]" 第 90 行
../middlewares/st/touchgfx/framework/include/common/Meta.hpp(90): error: #70: 不完整的类型是不允许的
struct select_type_maxsize > : public type_max::类型>
检测期间:
实例化类“touchgfx::meta::select_type_maxsize> [with First=Screen64View, Next=touchgfx::meta::TypeList>]" 第 90 行
../TouchGFX/target/generated/TouchGFXConfiguration.cpp: 0 个警告,4 个错误
“STM32F469I-DISCOSTM32F469I-DISCO.axf”- 12 个错误,0 个警告。