95% сложности программирования МК на "С" это работа с периферией. Сам по себе язык после ассемблера очень прост.
Начинать всем советую с ...
"Андрей Богатырев. Руководство полного идиота по программированию (на языке Си)"
http://lib.ru/CTOTOR/starterkit.txt
Ответы на все вопросы по языку смотреть тут ...
керниган и ричи
http://chaos.ssu.r …programms/progr/kr.pdf
Для начального чтива эта книга тяжеловата , но как справочник незаменимая вещь.
Стандартные функции либы языка смотреть например тут...
http://lord-n.naro …ming/Spr_po_C/main.htm
Операции ввода/вывода в регистры конкретного МК смотреть с фирменном руководстве и апнотах.
Разрядность типов переменных в хелпе к используемуму компилятору.
(для безгеморойного начала IAR для мк и KEIL для арм , потом можно найти че по всксу)
Серьезная проблема выбрать размер стека.Этот вопрос надо изучить.
С++ для МК категорически не рекомендую на начальном этапе.Только по БОЛЬШОЙ и НЕОТЛОЖНОЙ нужде.
Стилей программирования и методики раскидывания проги по файлас существует сотня (и не одна) способов.Точнее 3-4способа и туева хуча нюансов.
Поэтому изучая чужие исходники ВСЕГДА приходится материться.Это нормально.
Надо выбрать свой путь.