Программирование микроконтроллеров это несколько направлений изучения:
1) Сам контроллер, то есть инструкция(даташит) по работе непосредственно с железом, которую придется прочитать и понять;
2) Язык программирования это Ассемблер и/или C/C++ который придется выучить, если не в совершенстве, то хотя бы на приличном уровне(ни с какими питонами, шарпами, джавами и т.д. микроконтроллер на прямую не взаимодействует, есть некоторые интерпретаторы, но это совсем криво и от лукавого);
3) Изучение основных технологий работы с интерфейсами и принципов работы микроконтроллера, а так же его обвеса, так как микроконтроллер не может работать сам по себе, он всегда взаимодействует с окружающей его микроэлектроникой...
Это наверное и есть три основных "кита" некоторых построено изучение микроконтроллеров.
В принципе можно начать с Ардуино или Ардуино-подобных поделок, но я все же рекомендовал бы изучать STM(отладочный комплект (отладочная плата + программатор/дебагер) - будет значительно дешевле), хотя возможно для не подготовленного разума STM будет слишком сложным.
Можно конечно изучать микроконтроллер и без "живого" железа на эмуляторах типа протеус или аналогичных, но это уже требует хорошего понимание того, как все должно работать...
В общем путь не легкий, но дорогу осилит идущий! Удачи!