Я знаю, что есть много вопросов по этой теме, и я просмотрел немало из них. Однако у меня все еще есть проблемы.
Я начал писать тестовую программу для прототипа печатной платы, и теперь, когда она выросла почти до 1000 строк, я пытаюсь разбить ее на библиотеки, которые я могу использовать для определенных функций.
Я думал, что это будет очень просто. Создайте файлы .c и .h для каждой необходимой мне библиотеки. т.е. Я бы использовал OLED.h и OLED.c для функций, управляющих OLED-дисплеем. Скопируйте соответствующие функции/определения в каждый файл. Затем скопируйте эти файлы в решение в Atmel Studio. Я помещаю их в папку src под названием проекта.
Однако это не работает! Я получаю чрезвычайно длинный список ошибок. Все, что определено в файле .h, по-видимому, не определено компилятором. Я также получаю много сообщений об ошибках типа "неизвестное имя типа int16_t/uint16_t/uint8_t/etc..." Эта часть меня действительно сбивает с толку. Какая разница, что функции находятся во внешней библиотеке, если теперь компилятор не понимает, что означают эти типы данных?
Так что, наверное, это глупая проблема. Я не хочу, чтобы Atmel Studio контролировала мои библиотеки, заключая их в какой-то «библиотечный проект» или что-то в этом роде, я хочу помещать их в папку по своему выбору и добавлять их, когда они мне нужны. Я искал ответы на эту проблему и нашел длинные руководства по изменению настроек компилятора для проекта, настроек компоновщика и т.д. .engblaze.com/tutorial-using-avr-studio-5-with-arduino-projects/#setup" rel="nofollow">http://www.engblaze.com/tutorial-using-avr-studio-5- with-arduino-projects/#setup
Я также не могу найти способ добавить что-то, щелкнув проект правой кнопкой мыши и нажав «Добавить». Он хочет, чтобы я нашел файлы .a. Диалоговое окно «Добавить библиотеку» в Atmel Studio кажется ужасным.
Конечно, не может быть так сложно просто добавить библиотеку в существующий проект и заставить ее нормально работать?! Я использовал PIC в прошлом, и, придя к Atmel, я нашел ужасную документацию и странный супергладкий интерфейс super-fly wiz bang, который не может оставить в покое и запутывает простую функцию. Что я могу сделать, чтобы добавить эти библиотеки?
ОБНОВЛЕНИЕ: Кажется, я ответил на свой вопрос. Оказывается, мне нужно было включить все библиотеки для распознавания типов данных и многого другого в файл .c. Я почему-то предполагал, что это нужно делать только в основном файле, но, очевидно, я ошибался. Добавление asf.h, похоже, работает хорошо, поскольку оно включает в себя все определения/имена портов, специфичные для MCU, и все такое. Все хорошо на данный момент!