TouchGFX Maximum number of screens for Keil uVision IDE
Keil projects shows an error when I add more than 65 screens in the project (works fine with less than or equal to 65 screens). I checked this multiple times by creating multiple new projects and even multiple versions of cubemx and touchgfx designers still no luck. I have tried cubemx 5.3, cubemx 5.6, cube mx 6.0 basically every version since 5.3. I even tried diffrent touchgfx designers from 4.10 to 4.15. When I create the same project with more than 65 screens for STM32cubeIDE it works perfectly fine.
Here's the procedure I follow
- Open touchGFX designer
- Select my board STM32F469i-DISCO and Blank ui
- Add 66 screen and 2-3 buttons
- Generate project
- Open cubemx file of project and select MDK ARM 5.28.0.0 Keil IDE and generate project for keil
- Open project in keil
- Compile errors in meta.h file which is part of touchgfx framework and not a user file
If if follow above steps for less than or equal to 65 screens It works fine. And everything works for STM32CubeIDE even 66+ screens
You can easily reproduce this error by following above steps
../middlewares/st/touchgfx/framework/include/common/Meta.hpp(90): error: #456: excessive recursion at instantiation of class "touchgfx::meta::select_type_maxsize<touchgfx::meta::TypeList<Screen65View, touchgfx::meta::TypeList<Screen66View, touchgfx::meta::Nil>>>"
struct select_type_maxsize<TypeList<First, Next> > : public type_max<First, typename select_type_maxsize<Next>::type>
detected during:
instantiation of class "touchgfx::meta::select_type_maxsize<touchgfx::meta::TypeList<First, Next>> [with First=Screen64View, Next=touchgfx::meta::TypeList<Screen65View, touchgfx::meta::TypeList<Screen66View, touchgfx::meta::Nil>>]" at line 90
../middlewares/st/touchgfx/framework/include/common/Meta.hpp(90): error: #70: incomplete type is not allowed
struct select_type_maxsize<TypeList<First, Next> > : public type_max<First, typename select_type_maxsize<Next>::type>
detected during:
instantiation of class "touchgfx::meta::select_type_maxsize<touchgfx::meta::TypeList<First, Next>> [with First=Screen64View, Next=touchgfx::meta::TypeList<Screen65View, touchgfx::meta::TypeList<Screen66View, touchgfx::meta::Nil>>]" at line 90
../TouchGFX/target/generated/TouchGFXConfiguration.cpp: 0 warnings, 4 errors
"STM32F469I-DISCO\STM32F469I-DISCO.axf" - 12 Error(s), 0 Warning(s).


