我正在使用 STM32 B-L072Z-LRWAN1 发现套件。在 CubeMX 上为 B-L072Z-LRWAN1 发现套件创建项目后,如何在外部添加 I-CUBE-LRWAN 库。因为我创建的项目没有无线电库。我正在使用 System Workbench 进行编码。在这个项目之前,我使用了 Ping-Pong 示例。创建一个新项目是不同的。所以我正在尝试为 Lora 制作一个新项目。感谢您的回答。
1 回答
我将从 Keil 项目的角度来回答它,因为这是我完成它的程序,但这些步骤应该可以与 IDE 互换。它主要涉及复制代码并添加正确的链接器和源路径。
I-CUBE-LRWAN 项目已经建立,例如项目的各个部分已经分离。项目的根目录包含三个文件夹Middlewares
:Projects
和Drivers
。这些文件夹在其树结构中包含.h
和文件。.c
驱动程序
该Drivers
文件夹包含与您正在使用的特定板、HAL(硬件抽象层)、CMSIS相关的所有文件和 BSP(板级支持包)。HAL 和 CMSIS 为设备提供了一个通用接口,当使用这些接口时,通过更改 CMSIS 板的特定定义,可以创建可以移植到其他 STM32 平台的代码。我建议您在创建项目时勾选该框以将所有库文件包含在项目中。这将使编译花费更长的时间并且您的项目更大,但也会阻止您为缺少的库而烦恼。BSP 包含针对您平台上存在的接口的板特定接口。这包括 L072Z-LRWAN1 上的 LED 和按钮,如果是 STM32l4 nucleo,则包括操纵杆/LCD。我建议您复制您的板特定 BSP(.h
和.c
) 到您的项目中,并将它们用作开发板特定功能的标准化接口。.h/.c
当您使用自定义板时,您应该创建一个新的 BSP对。
项目
包含您的Projects
项目特定代码并包含应用程序的业务端。由于 ST 选择在文件中实现所有 LoRaWAN 代码,因此这里出现了一些障碍main.c
。我建议您取出所有与 LoRaWAN 相关的初始化和传输代码(通常与LoRaMainCallback_t
. 这是一项工作,但由于您的正常代码已与您的 LoRaWAN 处理分开,因此会带来好处。我已将 LoRaWAN 代码存储在文件lorawan.<h|c>
中。关于其余文件:将内容移动到项目中名为LoRaWAN/App/inc/
and的单独文件夹中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
选项),并将源文件添加到项目中。
中间件
该Middlewares
文件夹需要从源项目复制到您的目标项目,并且每个inc
文件夹或包含.h
文件的文件夹都需要添加到您的包含路径中,并且每个源文件都需要添加到您的项目中。我建议将文件夹结构保留在您的 IDE 中,以使您在项目和文件夹结构之间的导航更容易。
保持文件夹结构相似的另一个积极效果是使用更新的堆栈升级代码应该更容易,因为可以在两个项目中的相同位置找到文件。
预处理器定义
并且是最重要的一步。您需要获取DEFINE
项目内部定义的参数并将其复制到您自己的项目中。这可以在 Keil 项目(以及其他项目也在其他地方)中找到:options for target x
-> C/C++
-> define
。它包含类似于这些值的内容:STM32L072xx,USE_B_<board name>,USE_HAL_DRIVER,REGION_EU868,DEBUG,TRACE
. 如您所见,我正在使用:集成了 STM32、EU 868 区域以及调试和跟踪选项的 Murata 收音机。
当你做对了所有事情时,应该可以包含“hw.h”并编译你的程序。