Структура проекта

Каждый раздел написан как отдельное занятие, хотя иногда и придётся использовать код из предыдущих разделов. Так или иначе, цель курса — создание рабочего устройства, поэтому нулевым шагом является — задать структуру проекта.

Согласно модульной парадигме программирования, стоит выделять в обособленные файлы все логически самостоятельные сущности. В некоторых случаях это может показаться бредово, выделять целый файл для одной функции длиной в одну строчку, но это плата за то, что бы структура оставалась понятной и прозрачной.

Каждому модулю будет соответствовать два файла — заголовочный и исходного кода. Например для микросхемы MAX7219:

Создайте такие же пары файлов для каждой сущности. Потребуются еще два файла, заголовочный и файл исполняемого кода: stm32f1xx_it.h и stm32f1xx_it.c. В этих файлах будут описываться все обработчики прерываний, о которых мы еще поговорим.

Так как в курсе будет использовано аж четыре библиотеки (CMSIS, SPL, LL и HAL), то под каждую из них в репозитории заведена отдельная папка.

В файле device_conf.h можно хранить идентификатор устройства, версия прошивки, макросы DEBUG и RELEASE, а так же синонимы для всех необходимых констант (имена портов и т.д.).1

Кроме того, нужно создать дополнительный заголовочный файл main.h — это единственный заголовочный файл, который мы будем подключать к main.c. Вся работа с модулями будет идти через него.

Помимо этого, нам потребуется функция:

определение которой мы поместим непосредственно в main.c. Через нее будут вызываться все функции инициализации периферии микроконтроллера (в том числе и системы тактирования).

Репозиторий на github: CMSIS.


Назад | Оглавление | Дальше


1 Полный пример device_conf.h в репозитории приведён только для SPL.