I needed to drive a set of NeoPixels from an Espressif ESP32 micro controller. I couldn’t find an off-the-shelf library for driving them, so I made my own.
"How do I learn embedded systems programming?" is like asking, "How do I learn development?" but in an alternate universe where 128k is still a lot of RAM.