ST in STMcube prefers FreeRTOS, Keil his RTX. Unfortunately, for example STM32F1 not exist drivers compatible with CMSIS 2.02 and so there is the question of whether to use RTX or FreeRTOS? It is one of them significantly better?
My suggestion is to use CMSIS RTOS compliant RTOS.
CMSIS RTOS is RTOS specifically tailored to Cortex-M microcontrollers (more can be found here: http://www.keil.com/pack/doc/CMSIS/RTOS/html/index.html).
Keil has made an CMSIS RTOS implementation with using RTX underneath.
Also if you mention MDK-Pro, Middleware and emWin most of these components rely on an CMSIS RTOS being present.
We added CMSIS RTOS API support to FreeRTOS in PolyMCU framework (github.com/.../polymcu). You can easily switch the RTOS by only changing a single variable. We also created a CMSIS RTOS conformance test to ensure any CMSIS RTOS behaves correctly: github.com/.../README.md
PolyMCU is an Open-Source firmware framework based on CMSIS - primarily targetting ARM Cortex-M. The framework supports GCC and LLVM toolchain. As it is based on CMake, it supports Windows/Linux/MacOS. In term of firmware, it supports Baremetal/ARM RTX/FreeRTOS environment and major MCU vendors (Freescale, Nordic, NXP, ST).