Как добавить библиотеки I-CUBE-LRWAN в новый проект? - PullRequest
0 голосов
/ 07 марта 2019

Я работаю с комплектом обнаружения STM32 B-L072Z-LRWAN1.Как я могу добавить библиотеки I-CUBE-LRWAN извне, после того, как я создал проект на CubeMX для набора обнаружения B-L072Z-LRWAN1.Потому что проект, который я создал, не имеет радиотек.Я кодирую с помощью System Workbench.До этого проекта я использовал пример пинг-понга.Это было расходящимся для создания нового проекта.Поэтому я пытаюсь сделать новый проект для Лоры.Спасибо за ответы.

1 Ответ

0 голосов
/ 21 июня 2019

Я собираюсь ответить на него с точки зрения проекта Keil, потому что это программа, в которой я это сделал, но эти шаги должны быть взаимозаменяемыми с IDE. В основном это включает в себя копирование кода и добавление правильного компоновщика и исходных путей.

Проект I-CUBE-LRWAN был настроен так, что части проекта были разделены. Корневой каталог проекта состоит из трех папок: Middlewares, Projects и Drivers. Эти папки содержат файлы .h и .c внутри своей древовидной структуры.

Драйверы

Папка Drivers содержит все файлы, относящиеся к конкретной используемой плате, HAL (Уровень аппаратной абстракции), CMSIS и BSP (Пакет поддержки плат). HAL и CMSIS предоставляют обобщенный интерфейс к устройству, и при их использовании создает код, который может быть перенесен на другие платформы STM32 путем изменения определенных определений платы CMSIS. Я бы порекомендовал, чтобы при создании проекта вы отметили флажок, чтобы включить все библиотечные файлы в ваш проект. Это сделает компиляцию более длительной и ваш проект увеличится, но также не позволит вам возиться с отсутствующими библиотеками. BSP содержит специальные интерфейсы для интерфейсов, имеющихся на вашей платформе. Это включает в себя светодиоды и кнопки на L072Z-LRWAN1 и, в случае ядра STM32l4, джойстик / ЖК-дисплей. Я бы порекомендовал вам скопировать конкретный BSP вашей платы (.h и .c) в ваш проект и использовать их в качестве стандартизированного интерфейса для поддержки определенных функций. Вы должны создать новую пару BSP .h/.c при использовании пользовательской платы.

Проекты

Projects содержит код, специфичный для вашего проекта, и бизнес-конец вашего приложения. Здесь возникло некоторое затруднение, поскольку ST решила внедрить весь свой код LoRaWAN в файл main.c. Я бы порекомендовал вам взять весь код инициализации и передачи, связанный с LoRaWAN (как правило, все, что связано с LoRaMainCallback_t), и поместить его в отдельный файл с определенным интерфейсом. Это небольшая работа, но она принесет дивиденды в связи с тем, что ваш обычный код был отделен от обработки в LoRaWAN. Я сохранил свой код LoRaWAN в файле lorawan.<h|c>. Что касается остальных файлов: переместите содержимое в отдельные папки в вашем проекте с именами LoRaWAN/App/inc/ и LoRaWAN/App/src/. Это относится к файлам: debug.c, hw_gpio.c, hw_rtc.c, hw_rtc.c, vcom.c, debug.h, hw.h, hw_conf.h, hw_gpio.h, hw_msp.h, hw_rtc.h, hw_spi.h, utilities_conf.h и vcom.h. Добавьте папку inc в путь включения (опция -I) и исходные файлы в свой проект.

1046 * промежуточное программное * Папка Middlewares должна быть скопирована из исходного проекта в целевой проект, и каждая папка или папка inc с .h файлами должна быть добавлена ​​в ваш путь включения, и каждый исходный файл должен быть добавлен в ваш проект. Я бы порекомендовал сохранить структуру папок внутри вашей IDE, чтобы упростить навигацию между проектом и структурой папок. example of matching structure Еще один положительный эффект от сохранения структуры папок схожим состоит в том, что обновление кода с использованием более нового стека должно быть проще, поскольку файлы можно найти в одном и том же месте в обоих проектах. Препроцессор определяет

И самый важный шаг. Вам нужно взять параметры DEFINE, определенные внутри проекта, и скопировать их в ваш собственный проект. Это можно найти внутри проекта Keil (и других проектов, но также и в других местах) в: options for target x -> C/C++ -> define. Он содержит что-то похожее на эти значения: STM32L072xx,USE_B_<board name>,USE_HAL_DRIVER,REGION_EU868,DEBUG,TRACE. Как вы можете видеть, я использую: радио Murata со встроенным STM32, регион ЕС 868 и опции отладки и трассировки.

Должна быть возможность включить "hw.h" и скомпилировать вашу программу, когда вы все сделали правильно.

...