Цитата(Smoky @ Jan 1 2018, 07:55)

Разобрав несколько примеров сделал попытку переделать один из своих проектов, разделив свои заголовочные файлы на .c и .h. Как только я это сделал с одним файлом компилятор сразу же "потерял" функции в других заголовочных файлах, которые я не изменял.
Переделка только одного файла может только запутать все эти перекрестные ссылки.
Нужно переделывать все. Обычно это довольно трудоемко.
У меня есть опыт перенятия чужих проектов начинающих программистов, которые плохо понимали структуризацию проектов на Си.
На "распутывание" проекта из ~20 файлов уходила пара дней

Там еще будут проблемы грамотного ограничения области видимости переменных и функций,
но это вам можно оставить на потом, после вникания в это.
Цитата(Smoky @ Jan 1 2018, 16:54)

Логику использования .h файлов я понял, я не уловил в примерах закономерности директив #include в модулях .c
Для начала, все .с файлы должны быть включены в проект в самой IDE AVRStudio
Там должно быть окно с деревом файлов проекта. Файлы обычно включаются командой типа: Add file to project
С инклудами .h файлов все просто. Запускаете компиляцию проекта. Например на файл main.c компилятор ругается, что не может найти функцию func(). Вы поиском находите, что эта функция у вас находится в файле uart.c, а в файле uart.h есть описание её прототипа. Значит, в начало файла main.c нужно добавить #include uart.h
И так по всем ошибкам компилятора.
С Новым Годом!