Hello Adib Taraben,
I am glad to read, that someone else is unhappy with CMSIS-UART. I share your opinion, that CMSIS USART Driver is not 100% applicable for randomly receiving
You could implement a ringbuffer yourself and restart receiving inside the callback, which is assigned with Initialize().
// callback routine if (event & ARM_USART_EVENT_RECEIVE_COMPLETE) { // restart drv->Receive(ringBufferMem, ringBufferSize) }
In combination with GetRxCount() and a position variable, reading from ringbuffer is possible.
Disadvantage: Although restart is done inside callback, some dead time exist after the end of previous receiving.
Thomas R
http://www.keil.com/forum/60287/