Showing results for 
Search instead for 
Did you mean: 

NUCLEO-H563ZI + GFX02Z1 + ThreadX

Associate II

I'm a novice getting re-acquainted with embedded, and acquainted with STMicro products

I'd like to use the NUCLEO-H563ZI + GFX02Z1 with ThreadX instead of FreeRTOS.  I perform these steps:

  1. In TouchGFX Designer I create a new project with the included NUCLEO-H563ZI + GFX02Z1 template (FreeRTOS based)
  2. Open the ioc file in CubeMX.  In Middleware and Software Packs, disable X-CUBE-FREERTOS, enable THREADX (core only), switch X-CUBE-TOUCHGFX to use ThreadX. Generate Code
  3. Open .project file in CubeIDE.  Remove folder Middlewares/RTOS2 from project.  Build entire project successfully

Is that all that's required?  I ask because I'm experiencing some odd behavior that I don't see if leave the project as FreeRTOS based.

Specifically I've created a quick trial that increment/decrements a text area numerical display based on joystick interactions (Left == increment, Right == decrement).  With FreeRTOS I get quick responses from repeated joystick presses in any combination.  With ThreadX I have to wait for multiple seconds before consecutive pushes are recognized on the same switch of the joystick.  For instance pressing RIGHT-RIGHT-RIGHT only recognized the first interaction.  Interestingly if I do something LEFT-RIGHT-LEFT in rapid succession all the presses are recognized.

I've attached the ThreadX based project for reference

I'm looking for advice on how to correctly configure for threadX, and how to resolve my joystick problem.

Thanks for the help

ST Employee

Hello @DJ001 ,


I do not think you have done all the steps necessary to change RTOS.
Here is the on how to change RTOS and specifically how to change from FreeRTOS to ThreadX .

I hope this helps you.


If this solves your issue, I invite you to select this comment as "best answer".



Gaetan Godart
Software engineer at ST (TouchGFX)


Thanks for the suggestion.  I reviewed the identified document and the only deviation that I found was the default setting of 100 for timer_ticks_per_second.  Updating and rebuilding with the suggested value of 1000 does not appear to have any impact on behavior.

The rest of the documentation deals with the various call and functions that are auto-generated by CubeMX.  I've scanned the code all of these seem to be present.

I'm clearly out of my depth here, but I'll keep working and exploring.

Thanks again