
Chuckt asked what goals important to master microcontrollers. There’s been some good suggestions so far, which are consolidated on the wiki:
Basic
- Pins/port/direction (LED flashing)
- PWM (LED intensity)
Advanced
- UART communication (when and how to use max232 chip)
- SPI communication
- I2C communication
- CAN communication
- Interrupts (pin – detect button press, UART – communication)
- Hardware timers
- Interfacing an HD44870 display
- Analog-Digital Conversion (ADC)
- Digital-Analog Conversion (DAC)
- EEPROM (store stuff)
- Sleep/low power (battery operation)
- Bootloaders (memory map, self-writing)
Broad concepts
- Multiplexing (timers, pins)
Image by David Henry : CC BY-SA
Via the forum.

And USB!…many MCUs have USB slave,so one should try and get some experience with that too.
The number one most important thing to master a microcontroller: How to read a datasheet! This is not meant to be insulting- each manufacturer writes theirs it a little differently, though there tends to be consistency within a single manufacturer’s parts, and 95 percent of the answers to the questions you have will be in the datasheet. And for those manufacturers that publish their errata in a timely fashion (they *ALL* have errata, just not all of them are shared with the public), this leads to the corollary- learn to read the errata- this will solve 4.9% of the rest of your problems.
Writing decent code, people! Start with writing decent C code on a PC, because if you can’t do it (and diagnose and debug it) there, you’ll be SOL once you get down onto an MCU.
I’d add to @Matt Bennett’s comment — learning to read and understand an API. Not R-ingTFM is like living your life with an opaque sack over your head. If you’re unwilling to read and try to *really* understand, consider a career in the fast food industry (but still be careful around the fryer).
.
RS-485 first then CAN.
Two important development subject that are seemingly always overlooked: (1) Simulation and (2) In circuit debugging.