There is, no doubt, a learning curve when you begin using a real-time operating system (RTOS) in your development. You will work at a higher abstraction level, using more or less parallel tasks rather than just subroutines, and you will need to consider how your tasks shall share data and the processor time with each other.
RTOS debugging, part 1: Dealing with timing issues
RTOS debugging, part 2: Your tasks need that CPU; don’t starve them of it
RTOS debugging, part 3: Chasing the jitter bug
RTOS debugging, part 4: Priority inversion – when the important stuff has to wait
RTOS debugging, part 5: Deadlock – when everybody wants the fork