Well, if you are new to the MCU world maybe you should focus on having a strong knowledges of the basis. If you jump dirctly to the trendy world of ARM such as Cortex m3 as soon as things do not work you will get lost due to the hyper complexity of thoses beasts. It's not the right time for you to solve problems such as PLL locking, clocks gating, mutichannel DMA or very compex Timer units. you should focus on basic but powerful 8 or 16bit MCU. such as MSP430, Pics, AtMega, etc.
If you know how to work at this level, without hal libraries, rom included RTOS etc. You will become a much better embedded programmer. I have tons of example of programmers who began with powerful ARM chip and that put float variable everywhere, use complex c++ class and finally end up with exteremely innefficient and very slow result. If you know about fixed point math, look up tables and efficient usage of embedded ressources you will be a king. there is also a debate about the language to learn with. 10 years ago people would say that you have to start with assembly first. and afterwards you may use higher level languages such as C. but real ingeneers will stay at the assembly level. I think that it's to true anymore. having knowledge in assembly is good but nowadays c compiler offers very decent performance. What is important is to know what happend at the lowest level. what is a register overflow. how integer math works and how to use bitwise operations.