Bueno, si eres nuevo en el mundo de MCU tal vez deberías centrarte en tener un gran conocimiento de la base. Si salta directamente al mundo de moda de ARM, como Cortex m3, tan pronto como las cosas no funcionen, se perderá debido a la gran complejidad de estas bestias. No es el momento adecuado para resolver problemas como el bloqueo de PLL, la sincronización de relojes, el DMA de múltiples canales o las unidades de temporizador muy compex. Debes centrarte en el MCU básico pero potente de 8 o 16 bits. como MSP430, Pics, AtMega, etc.
Si sabe cómo trabajar a este nivel, sin las bibliotecas hal, ROM incluido RTOS, etc., se convertirá en un programador integrado mucho mejor. Tengo un montón de ejemplos de programadores que comenzaron con un potente chip ARM y que pusieron una variable flotante en todas partes, usan una clase compleja de c ++ y finalmente terminan con un resultado extremadamente ineludible y muy lento. Si sabe acerca de las matemáticas de punto fijo, busque tablas y el uso eficiente de los recursos incrustados, será un rey. También hay un debate sobre el idioma para aprender. Hace 10 años la gente diría que primero hay que comenzar con el montaje. y luego puede usar idiomas de nivel superior como C, pero los ingenieros reales permanecerán en el nivel de ensamblaje. Creo que ya es verdad. tener conocimiento en ensamblaje es bueno, pero hoy en día el compilador c ofrece un rendimiento muy decente. Lo importante es saber qué ha pasado en el nivel más bajo. Qué es un desbordamiento de registro. cómo funciona la matemática de enteros y cómo usar operaciones bitwise.