In RTOS1, e.g. in RTX4.xx, calls like osSignalWait() take a timeout which the caller passes in units of milliseconds. This millis value then undergoes a transformation to systicks in rt_ms2tick (rt_CMSIS.c). This routine truncates to U16, so the max value it can return is of course 65535. With an OS_TICK of 1ms (the suggested), the max millis timeout we can achieve is 65.535 seconds, just over a minute. In our apps, we'd routinely like timeout on the order of minutes, so the 65 second limit is a pain I'll have to work around.
Anyone know why RTX4 uses U16 to handle its delays? i would have thought U32 was much better.
Stu
FreeRTOS's "configUSE_16_BIT_TICKS" item allows exactly that.
RTX4 uses 16-bit time storage (historically to save RAM).
You should consider switching to RTX5 which uses 32 bits.
You can continue using CMSIS-RTOS API or migrate to more advanced CMSIS-RTOS2 API.
Take a look at the migration guide: http://www.keil.com/pack/doc/CMSIS/RTOS2/html/os2Migration.html