cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGfx with ILI9341

zain_stm32
Associate II

Hi All,

This is the first time I am posting on this forum. I am new to cubeIde/cubeMX world.

 I have recently started integrating the touchGFX capability to my stm32 boards. I followed some online tutorials and youtube videos like these:

(https://www.youtube.com/watch?v=g1siKaPox88&list=PL6Fwy7aR3zSlZO3OBppHSzDacE4CGgRqO)

However I am having issues in compiling my code. The moment I compile my code I get like 200+ errors in  middleware and touchgfx/generate folder. I have tried creating a project using different boards however I am keep getting these errors.  I have tried configuring the board in cubeMx and then importing it in cubeIde, also tried creating  a project in just cubeide as well but i am keep getting these issues.

My cubeMx version is: 6.12.0

CubeIde version: Version: 1.16.0

TouchGfx version: 4.23.2

 

I have B-l475e-iot01a2(discovery board) and STM32L073RZ board. Problem is not the board here I tried creating a project using different board but my program is not compiling hence flashing the code to the board is the next step.

 

Please let me know what I am doing wrong. Any help will be much appreciated. I have attached screenshots of the errors I am getting. Please let me know if you guys need any further information.

 

Zain

 

1 ACCEPTED SOLUTION

Accepted Solutions

Those are linker errors.

They suggest that you are missing some source files and/or libraries.

A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.

View solution in original post

5 REPLIES 5

@zain_stm32 wrote:

The moment I compile my code I get like 200+ errors


https://community.st.com/t5/stm32-mcus-boards-and-hardware/nucleo-f767zi-ethernet-problem/m-p/703634/highlight/true#M20574

A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.

Thanks for your response, The link which you shared helped me to understand that the first error matters the most but I am not sure how to resolve the first error and what is causing this problem. please have a look on my first 5 errors:

 

C:/Users/username/STM32CubeIDE/workspace_1.16.0/Test_TouchGFX/Debug/../Middlewares/ST/touchgfx/framework/include/touchgfx/ConstFont.hpp:35: undefined reference to `vtable for touchgfx::ConstFont'

C:/Users/username/STM32CubeIDE/workspace_1.16.0/Test_TouchGFX/Debug/../TouchGFX/generated/fonts/src/GeneratedFont.cpp:14: undefined reference to `touchgfx::ConstFont::ConstFont(touchgfx::GlyphNode const*, unsigned short, unsigned short, unsigned short, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned short, unsigned short)'

C:/Program Files/ST/STM32CubeIDE_1.16.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.200.202406191623/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: ./TouchGFX/generated/fonts/src/GeneratedFont.o:(.rodata._ZTVN8touchgfx13GeneratedFontE+0x10): undefined reference to `touchgfx::ConstFont::getGlyph(unsigned short, unsigned char const*&, unsigned char&) const'

C:/Program Files/ST/STM32CubeIDE_1.16.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.200.202406191623/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: ./TouchGFX/generated/fonts/src/GeneratedFont.o:(.rodata._ZTVN8touchgfx13GeneratedFontE+0x28): undefined reference to `touchgfx::Font::getCharWidth(unsigned short) const'

 

Those are linker errors.

They suggest that you are missing some source files and/or libraries.

A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.

I created this project in stmcubeIde and then clicked on the part file to open touchgfx designer.

I used one of the touchButton example and then click generateCode on touchGFX designer to generate files on stmcubeIde.

 

Refreshing cubeIde generated the touchGFX files in my repo.  I just imported driver files for ILI9341, the rest of the code is auto-generated so I am not sure which library or source files might be missing.

Can you provide some direction that which files or libraries I am missing here?

 

Any help would be much appreciated.

 

Thanks :)

Just to let you guys know I managed to resolve this issue.

For some reason cubeIde dint have the path to libtouchgfx.a file.

To include this file into your project goto C/C++ Build-->Setting. Under the tool setting goto:

MCU/MPU G++ Linker--->Libraries and then type touchgfx (instead of libtouchgfx.a) (omit lib prefix and .a suffix)under the "Libraries (-l)" option and under the "Library search path (-L)" give the path address.

 

After generating the code from touchgfx you have to search the right file for your mcu because there might be multiple files for each M cortex. I was using coretx M0+ and for me file was located under following path:

 

C:\Users\username\STM32CubeIDE\workspace_1.16.0\stm32L073xx_touchGfx\Middlewares\ST\touchgfx\lib\core\cortex_m0\gcc