目录

CubeMX创建工程

项目管理

将CubeMX创建的工程导入到CubeIDE

创建用于演示的ADD.c文件和ADD.h文件

方式一:在IDE的项目浏览器内创建

方式二:在文件窗口处创建 / 从其他地方复制粘贴过来

将ADD.h添加到头文件搜索路径

将ADD.c添加到源文件搜索路径

在ADD.c文件内定义一个加法函数,在ADD.h文件声明这个函数,在main.c调用这个函数,构建项目,如果构建没有问题,就说明我们成功了

相对路径、绝对路径的优缺点


我们将会按照以下步骤进行操作

  • 在CubeMX创建一个最简单的工程
  • 将CubeMX创建的工程导入到CubeIDE
  • 创建用于演示的ADD.c文件和ADD.h文件
  • 将ADD.h添加到头文件搜索路径
  • 将ADD.c添加到源文件搜索路径
  • 在ADD.c文件内定义一个加法函数,在ADD.h文件声明这个函数,在main.c调用这个函数,构建项目,如果构建没有问题,就说明我们成功了

CubeMX创建工程

打开CubeMX,点击Help -> Updater Settings,弹出一个页面,页面中有一个内容,Firmware Repository(固件储藏室),就是用于管理固件包的下载路径的。需要注意,路径不可以带有汉字和空格。

点击Help -> Manage embedded software packages,弹出一个页面,在这里可以管理固件包以及下载固件包。

弄好上面的设置之后,点击主界面上的ACCESS TO MCU SELECTOR。

在1处输入你的芯片型号,在2处选择具体的型号,选好后,点击3处,开始创建工程。

然后就是下面的界面了。

由于我们这个项目只是用于演示,如何使用CubeMX并不是我们的重点,所以我使用CubeMX配置MCU会比较简单

按照下图进行操作,激活HSE的外部晶振设置

按照下图进行操作,配置好时钟树,注意输入正确的外部晶振频率

按照下图进行操作,激活调试接口,将其设置为SWD调试

此时芯片已经可以运行了,但是为了让这个工程不那么“虚”,就设置两个GPIO吧。

在引脚视图上,将PF9和PF10的引脚功能设置为GPIO_Output

按照下图进行操作,设置一下GPIO的输出电平以及用户标签。

现在就配置好芯片了。

项目管理

下一步进行生成项目管理。

我的项目框架的生成路径是单独的一个文件夹,你也可以将路径设置为CubeIDE的Workspace,只是我习惯这样。

这样,我们就成功使用CubeMX创建了一个项目框架了。


将CubeMX创建的工程导入到CubeIDE

说明:在下面,项目 == 工程

这个时候我们已经有一个工程了。将工程复制一份到CubeIDE的工作空间(Workspace)。

将工程导入到IDE:

  • 方法一:打开CubeIDE,点击CubeIDE左上角的File -> Open projects from file system,点击Direction,选中工作空间下想要导入的工程文件夹,最后点击 Finish。
  • 方法二:在工作空间文件夹内,打开项目文件夹,打开.project文件,或者打开.cproject文件。

导入成功后,构建一下,没有问题。

下图中,左边是IDE里面项目浏览器看到的工程目录,右边是工作空间下工程文件内的工程目录。

我的工作空间路径:E:\STM32Cube\STM32CubeIDE_Workspace

我的工程路径:E:\STM32Cube\STM32CubeIDE_Workspace\test20231005


创建用于演示的ADD.c文件和ADD.h文件

接下来,我将会在工程内创建一个ADD文件夹,并在这个文件夹内创建ADD.c文件和ADD.h文件

创建文件夹和文件有两种方式:

方式一:在IDE的项目浏览器内创建

在IDE的项目浏览器处,选中工程,右键,点击 “NEW” ,就可以看到上面的东西了。

点击 “File” 或者 “File from Template” 或者 “Folder” ,会弹出如下图所示的界面,可以设置文件夹、文件创建的位置以及名称。

“File” 和 “File from Template” 本质上是一样的,只是后者有个模板。

创建完成后,就可以在项目浏览器处看到文件夹,以及文件夹下的文件了。

使用头文件模板创建出来的.h文件,如图。


方式二:在文件窗口处创建 / 从其他地方复制粘贴过来

在工作空间下,工程文件内,在文件窗口处创建一个文件夹,命名为ADD。打开ADD,在这个文件夹内创建ADD.c和ADD.h这两个文件。在新建那里是找不到 .c 和 .h 的,可以创建文本文档文件(.txt文件),然后修改其文件后缀名。

如果看不到文件后缀名,可以点击文件夹上方的“查看”,然后勾选“文件扩展名”,这样就可以看到文件的后缀名了。

在文件窗口处创建文件夹和文件,或者你的文件夹和文件是从别处复制粘贴过来的,那么,IDE的项目浏览器并不会马上显示刚刚创建的文件夹和文件。这个时候需要在IDE的项目浏览器处右键,点击“Reflash”刷新,或者构建项目,就可以在项目浏览器处看到刚刚创建的文件夹和文件了。

现在我们在IDE的项目浏览器处可以看到我们创建的文件夹和文件,但是工程还没有包含他们的搜索路径。

如果我们现在在main.c里include了ADD.h,然后构建/编译,是会出错的,提示找不到文件。如下图所示。


将ADD.h添加到头文件搜索路径

点击Project -> Properties(属性)

点击C/C++ General->Paths and Sybols

出现如图界面,中间部分的内容为已经包含的头文件路径。

目前来说,这些路径都是相对路径,基地址是工程路径

点击Add,出现如图界面。

想要把ADD文件夹添加进头文件搜索路径,有三种方式。

  • 方式一:在输入框A内输入ADD,点击OK。这种方式添加的是相对于工程路径的相对路径。
  • 方式二:点击Workspace,找到ADD,点击OK。这种方式添加的是相对于工作空间路径的相对路径。用这种方式时,Is a workspace path 这个选项需要被勾选上,如果没有勾选上,就是相对于工程路径的相对路径,构建/编译会出错。
  • 方式三:点击File system,找到ADD,点击OK。这种方式添加的是绝对路径

文章的末尾有相对路径、绝对路径的优缺点(来自GPT)

我这里添加的是相对于工作空间路径的相对路径

图中所示的是相对于工作空间路径的相对路径。

如果添加错了,可以选中想要删除的路径,点击Delete来把路径删除掉

记得点击Apply保存。


将ADD.c添加到源文件搜索路径

点击Source Location -> Add Folder,选中ADD文件夹内,OK,Apply即可。

记得点击Apply保存。

Add Folder 与 Link Folder 的区别:

Add Folder:add(添加)工程内部的文件夹

Link Folder:link(引用)工程外部的文件夹

添加成功后:


在ADD.c文件内定义一个加法函数,在ADD.h文件声明这个函数,在main.c调用这个函数,构建项目,如果构建没有问题,就说明我们成功了

ADD.c

ADD.h

不知道为什么,如果不包含,就会报错,错误提示如下

unknown type name ‘uint32_t’

包含就没事了,以前我不包含也不会报错的(有朋友知道为什么的话,欢迎在评论区告诉我,非常感谢)

main.c

头文件的包含

函数的调用

有一个警告,警告提示是我们定义的Result没有被使用。无关紧要。

现在,我们已经成功包含了.c/.h的搜索路径并验证。

如果还有什么疑问,欢迎评论区留言。


相对路径、绝对路径的优缺点

(来自GPT)

相对路径的优点:

1.简洁性:相对路径是相对于当前工作目录或者源文件所在目录进行解析,可以使用相对较短的路径来指定头文件的位置。

2.可移植性:相对路径相对于当前环境的目录结构,当项目移植到其他位置或其他机器时,相对路径可能更容易适应新的工作环境。

相对路径的缺点:

1.可靠性:相对路径可能依赖于文件结构和工作目录的变化,如果文件结构发生改变,那么相对路径可能无法正确找到头文件,导致编译错误。

2.可读性:相对路径可能不够明确,他人难以迅速理解头文件的具体位置。

绝对路径的优点:

1.精确性:绝对路径表明了头文件的确切位置,不受工作目录和文件结构的影响。无论当前工作目录在何处,都能准确找到头文件。

2.可读性:绝对路径提供了清晰明确的信息,他人易于理解和追踪头文件的位置。

绝对路径的缺点:

1.不够灵活:绝对路径是固定的路径,如果项目需要移植到其他位置或其他机器上,就需要手动更改绝对路径设置。

2.冗长性:绝对路径通常比较长,使用起来可能不太方便,尤其是在大型项目中含有多个嵌套文件夹的情况下。

在项目开发过程中,相对路径通常是更常见和推荐的选择,因为它具有简洁性和可移植性,可以更好地适应不同环境和项目结构的变化。

但在某些情况下,使用绝对路径可能更合适,特别是当项目的文件结构较为固定,或者需要确保代码在不同环境中都能准确找到头文件时。

无论使用哪种路径,都要确保代码的可读性和可维护性,并避免出现头文件路径错误导致的编译问题。