我正在使用STM32 B-L072Z-LRWAN1发现套件。在CubeMX上为B-L072Z-LRWAN1发现工具包创建项目之后,如何在外部添加I-CUBE-LRWAN库。因为我创建的项目没有无线电库。我正在使用System Workbench进行编码。 在进行此项目之前,我以乒乓球为例。创建一个新项目有分歧。因此,我正在尝试为Lora创建一个新项目。 感谢您的回答。
答案 0 :(得分:0)
我将从Keil项目的角度来回答它,因为那是我已经完成的程序,但是这些步骤应该可以与IDE互换。它主要涉及复制代码并添加正确的链接器和源路径。
已设置I-CUBE-LRWAN项目,以使项目的各个部分已分离。项目的根目录由三个文件夹组成:Middlewares
,Projects
和Drivers
。这些文件夹在其树形结构中同时包含.h
和.c
文件。
Drivers
文件夹包含与您正在使用的特定板,HAL(硬件抽象层),CMSIS和BSP(板支持包)相关的所有文件。 HAL和CMSIS提供了到设备的通用接口,并且在使用这些接口时,通过更改CMSIS板的特定定义,可以创建可移植到其他STM32平台的代码。我建议您在创建项目时选中该框以在项目中包括所有库文件。这将使编译花费更长的时间,您的项目更大,但也将防止您对丢失的库大惊小怪。 BSP包含针对您平台上存在的接口的特定于电路板的接口。其中包括L072Z-LRWAN1上的LED和按钮,如果是STM32l4核,则包括操纵杆/ LCD。
我建议您将电路板特定的BSP(.h
和.c
)复制到项目中,并将它们用作电路板特定功能的标准化接口。使用自定义板时,应该创建一个新的BSP .h/.c
对。
Projects
包含您的项目特定代码,并包含应用程序的业务端。 ST选择在main.c
文件中实现其所有LoRaWAN代码,这条路有些艰难。我建议您取出所有与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
,{{ 1}},hw_conf.h
,hw_gpio.h
,hw_msp.h
,hw_rtc.h
,hw_spi.h
和utilities_conf.h
。将vcom.h
文件夹添加到您的包含路径(inc
选项)中,并将源文件添加到您的项目中。
需要将-I
文件夹从源项目复制到目标项目,并且需要将每个Middlewares
文件夹或包含inc
个文件的文件夹添加到您的包含路径和每个源中文件需要添加到您的项目中。我建议将文件夹结构保留在IDE中,以使在项目和文件夹结构之间的导航更加容易。
保持文件夹结构相似的另一个积极效果是,使用新的堆栈升级代码应该更容易,因为在两个项目中都可以找到文件的位置。
这是最重要的一步。您需要采用在项目内部定义的.h
参数并将其复制到您自己的项目中。可以在Keil项目(以及其他项目,但在其他地方)中的以下位置找到:DEFINE
-> options for target x
-> C/C++
。它包含类似于以下值的内容:define
。如您所见,我正在使用:具有集成STM32,EU 868区域以及调试和跟踪选项的Murata收音机。
在正确完成所有操作之后,应该可以包含“ hw.h”并编译程序。