目录
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
不知道为什么,如果不包含<stdint.h>,就会报错,错误提示如下
unknown type name 'uint32_t'
包含<stdint.h>就没事了,以前我不包含也不会报错的(有朋友知道为什么的话,欢迎在评论区告诉我,非常感谢)
main.c
头文件的包含
函数的调用
有一个警告,警告提示是我们定义的Result没有被使用。无关紧要。
现在,我们已经成功包含了.c/.h的搜索路径并验证。
如果还有什么疑问,欢迎评论区留言。
相对路径、绝对路径的优缺点
(来自GPT)
相对路径的优点:
1.简洁性:相对路径是相对于当前工作目录或者源文件所在目录进行解析,可以使用相对较短的路径来指定头文件的位置。
2.可移植性:相对路径相对于当前环境的目录结构,当项目移植到其他位置或其他机器时,相对路径可能更容易适应新的工作环境。
相对路径的缺点:
1.可靠性:相对路径可能依赖于文件结构和工作目录的变化,如果文件结构发生改变,那么相对路径可能无法正确找到头文件,导致编译错误。
2.可读性:相对路径可能不够明确,他人难以迅速理解头文件的具体位置。
绝对路径的优点:
1.精确性:绝对路径表明了头文件的确切位置,不受工作目录和文件结构的影响。无论当前工作目录在何处,都能准确找到头文件。
2.可读性:绝对路径提供了清晰明确的信息,他人易于理解和追踪头文件的位置。
绝对路径的缺点:
1.不够灵活:绝对路径是固定的路径,如果项目需要移植到其他位置或其他机器上,就需要手动更改绝对路径设置。
2.冗长性:绝对路径通常比较长,使用起来可能不太方便,尤其是在大型项目中含有多个嵌套文件夹的情况下。
在项目开发过程中,相对路径通常是更常见和推荐的选择,因为它具有简洁性和可移植性,可以更好地适应不同环境和项目结构的变化。
但在某些情况下,使用绝对路径可能更合适,特别是当项目的文件结构较为固定,或者需要确保代码在不同环境中都能准确找到头文件时。文章来源:https://www.toymoban.com/news/detail-722915.html
无论使用哪种路径,都要确保代码的可读性和可维护性,并避免出现头文件路径错误导致的编译问题。文章来源地址https://www.toymoban.com/news/detail-722915.html
到了这里,关于STM32CubeIDE 创建 / 导入 .c / .h 文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!