0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | 使用STM32CubeMX生成配置代码的文件结构

STM32单片机 来源:未知 2023-09-19 09:35 次阅读

wKgZomUJxrCAdB5UAAHUHXdxAL4153.gif

关键字:.extSettings,文件结构,BSP

目录预览

1.前言

2..extSetting文件的作用

3.使用实例

4.小结

01 前言

在阅读UM1718文档的时候,发现CubeMX有个比较好的功能,可以用“.extSettings"文件一次,后续不管使用哪个IDE(只要是CubeMX支持的),都不需要再手动配置文件结构或包含头文件路径了,并且可以保持对各个IDE(只包括CubeMX支持的)配置的一致性,减少工作量。也有客户询问怎么添加工程文件的问题,考虑到可能有些同学不太了解这个功能,所以本文对这个功能进行介绍。

02

.extSettings文件的作用

".extSettings"文件是对CubeMX配置的补充,是在CubeMX配置的基础上进行的额外配置,不是替换CubeMX的配置,这点需要注意。

总体来说,".extSettings"文件中的配置包含三部分,分别是[ProjectFiles],[Groups]和[Others],下面分别对这三个部分的功能进行介绍。

2.1. [ProjectFiles]

[ProjectFiles]这个部分主要是用来包含一些目录,例如头文件存放的目录。

语法:HeaderPath=;

示例:HeaderPath=../BSP/STM32H735G-DK

说明:这里的路径是相对于“*.cproject”或 “*.project”文件(如果生成的是CubeIDE的工程代码的话)的相对路径。如果生成的是其他IDE的工程代码,则这个路径是相对于其他工程文件的相对路径,例如“*.eww”文件(IAR)或“*.uvprojx”文件(KEIL

效果:在".extSettings"文件中添加示例中的内容,重新生成代码后,效果如图1,红框部分是通过".extSettings"文件包含的目录,可以看到已经被包含到工程中。

wKgZomUJxrCAVLQTAAFkH2I-rRk167.png

图1 配置[ProjectFiles]后CubeIDE工程包含的目录

2.2. [Groups]

这个部分主要是用来在工程中创建文件组并且将文件添加到文件组中,用来组织工程的文件结构。

语法:=;

示例:Drivers/BSP/STM32H735G-DK=.. /BSP/STM32H735G-DK /stm32h735g_discovery.c;

说明:是工程中的文件组名(若不存在则会自动创建);是文件路径。示例中语句的作用是,嵌套创建“Drivers/BSP/STM32H735G-DK”这个文件组(可以多级嵌套创建),并且将“stm32h735g_discovery.c”文件添加进这个文件组中。可以在一个文件组中添加多个文件,只要多个之间通过分号(“;”)隔开即可。

效果:在".extSettings"文件中添加示例中的内容,重新生成代码后,效果如图2。

wKgZomUJxrCAcQmUAADgIJUk-PE408.png

图2 配置[Groups]后CubeIDE工程的文件结构

2.3. [Others]

[Others]这个部分主要是用来使能一些HAL模板和添加一些预处理定义语句。

2.3.1. 添加HAL模板

语法:HALModule=;;

示例:HALModule=SPI;ADC;

效果:在".extSettings"文件中添加示例中的内容,重新生成代码后,如果使用H7系列的芯片创建的工程,则会自动在“stm32h7xx_hal_conf.h”文件(如果是其他系列的芯片的话,名字会略有区别)中添加”HAL_SPI_MODULE_ENABLED"和“HAL_ADC_MODULE_ENABLED"这两个宏定义,作用是在这个文件中包含SPI与ADC的头文件。如图3所示:

wKgZomUJxrGAQrPsAANOMq_2QJw578.png

图3 配置[Other]的HALModule后HAL的配置文件中自动添加的内容

2.3.2. 添加预处理定义语句

语法:Define=;

示例:Define=TEST_STM32H735G_DEMO

效果:在".extSettings"文件中添加示例中的内容,重新生成代码后,可以看到".extSettings"文件中配置的预定义语句已经被添加到工程中了。

wKgZomUJxrGAbI3KAAHy8uiJd2E179.png

图4 配置[Other]的Define后自动在工程中添加的预处理语句

03 使用实例

下面的实例基于STM32H735G-DK板,使用“STM32Cube_FW_H7_V1.10.0”中的BSP驱动。要达到的目的是使板子上的LED1每隔0.5S切换一次亮/灭状态。下面是实现的步骤:

3.1.1. 创建CubeMX配置文件

使用STM32CubeMX创建STM32H735IGK6(STM32H735G-DK)的工程,其他配置都使用默认值即可,并保存这个配置文件。如图5所示:

wKgZomUJxrGABXLtAABSrFAZzFg338.png

图5 保存CubeMX产生的配置文件

3.1.2. 添加BSP文件

将“STM32Cube_FW_H7_V1.10.0/Drivers”路径下的“BSP”目录及其文件都复制到工程目录下(这里是复制到.ioc文件相同目录下,您也可以根据自己需要复制到其他地方,只要在".extSettings"文件中包含即可)。如图6所示:

wKgZomUJxrGAVN9uAABaR3a0KPE232.png

图6 复制“BSP”到工程目录下

修改BSP中 “stm32h735g_discovery_conf_template.h"文件的文件名,修改为“stm32h735g_discovery_conf.h”

wKgZomUJxrKABTXHAAREZK74X2Q549.png

图7 添加BSP的配置文件

3.1.3. 创建.extSettings文件

在.ioc文件同级目录下创建".extSettings"文件。如下图所示:

wKgZomUJxrKAaZ6MAABqolDo260071.png

图8 添加.extSettings文件

注意:.extSettings文件一定要放在.ioc文件的同一目录下

3.1.4. 修改.extSettings文件的内容

(1)因为要对GPIO进行操作,BSP文件是基于HAL库的,所以需要使用GPIO的HAL库(避免GPIO模块尚未使能,这里使能GPIO模块)。在[Others]部分需要添加的内容为:HALModule=GPIO

(2)添加BSP中需要包含的目录。所以在[ProjectFiles]中需要添加的内容为:HeaderPath=../BSP/STM32H735G-DK

(3)将BSP中的文件添加到工程中,因为只需要操作LED,所以需要添加“stm32h735g_discovery.c”文件即可,并创建文件组“STM32H735G-DK”。所以在[Groups]中需要添加的内容为:Drivers/BSP/STM32H735G-DK=../BSP/STM32H735G-DK /stm32h735g_discovery.c;

综合上面三点,在.extSettings文件中需要添加的内容为:

wKgZomUJxrKACj5yAACE61AGVDI982.png

3.1.5. 使用CubeMX生成适用不同IDE的工程代码

使用CubeMX生成代码(GENERAGE CODE),分别生成CubeIDE,IAR和KEIL的工程代码。

wKgZomUJxrKAI44hAAEPg9KeCKE238.png

图9 使用CubeMX生成代码

生成代码后,可以看到不同IDE的工程文件结构如下图:

wKgZomUJxrKAStiLAAIQvmrKSDI643.png

图10 STM32CubeIDE

wKgZomUJxrKAKAFdAAKCRCks848799.png

图11 IAR

wKgZomUJxrOAShYzAAHA-cgV2E4039.png

图12 KEIL

可以从上面图中看到,“stm32h735g_discovery.c”文件已经被添加到工程中,BSP的目录也已经被包含到工程中。

3.1.6. 添加代码实现功能

1.包含“stm32h735g_discovery.h”头文件。

wKgZomUJxrOAI4i4AABYpXIKb2I714.png

图13 包含“stm32h735g_discovery.h”

2.使用BSP初始化LED1的配置。

wKgZomUJxrOAS_QCAAB7eq95Vew628.png

图14 使用BSP初始化LED1的配置

3.添加LED1的翻转操作。

wKgZomUJxrOAVkLOAACmxS9RMLo594.png

图15 添加LED的翻转操作

结果:使用这三种IDE进行编译下载后都可以实现LED1每隔0.5S切换亮/灭状态的操作。

04 小结

使用".extSettings"文件配置工程的文件机构,可以做到一次配置,多种平台可用的效果,并可以保持配置的一致性。

注意:".extSettings"文件一定要放在.ioc文件相同的目录下

完整内容请点击“阅读原文”下载原文档。

wKgZomUJxrOAUHE-AAOyOP2Y2vs467.png订阅号

关注STM32

wKgZomUJxrSAdLdEAACDSIYrXK4535.jpg视频

wKgZomUJxrSAAskIAAAfRB2s2NQ048.pngB站账号

点击“阅读原文”,可下载原文档


原文标题:应用笔记 | 使用STM32CubeMX生成配置代码的文件结构

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620871
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348809

原文标题:应用笔记 | 使用STM32CubeMX生成配置代码的文件结构

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在STM32CUBEMX生成代码中添加自己的模块文件

    如果我想在STM32CUBEMX生成代码中添加自己的模块文件,且在更新引脚配置时不会丢失,要如何实现。
    发表于 04-26 06:15

    STM32CubeMX生成代码软件卡死的原因?怎么解决?

    STM32CubeMX 生成代码 软件卡死!在生成代吗时,一直卡死在如图所示的状态,进度条一直就不走了。试过多次,一直如此。请问如何解决该问题,原因可能是什么?
    发表于 04-10 06:03

    STM32CubeMX配置FREERTOS后无法生成代码怎么解决?

    stm32cubemx配置了freertos后报错,disable了freertos又能正常生成代码
    发表于 03-28 09:55

    STM8CubeMXSTM32CubeMX功能一样吗?

    STM8CubeMXSTM32CubeMX功能一样吗?
    的头像 发表于 10-31 16:59 1198次阅读
    STM8<b class='flag-5'>CubeMX</b>和<b class='flag-5'>STM32CubeMX</b>功能一样吗?

    STM32CubeMX介绍,功耗计算,中间件,CAD视图

    ,方便,并且直观的方式来完成这些工作。所有的配置完成后,它还可以根据所选的IDE生成对应的工程和初始化C代码。除此以外,STM32CubeMX还提供了功耗计算工具,可
    的头像 发表于 10-28 08:00 1194次阅读
    <b class='flag-5'>STM32CubeMX</b>介绍,功耗计算,中间件,CAD视图

    基于STM32U5 的 STM32CubeMX环境搭建

    基于STM32U5 的 STM32CubeMX环境搭建
    的头像 发表于 09-21 17:35 903次阅读
    基于<b class='flag-5'>STM32</b>U5 的 <b class='flag-5'>STM32CubeMX</b>环境搭建

    STM32CubeMX配置和C代码生成

    电子发烧友网站提供《STM32CubeMX配置和C代码生成.pdf》资料免费下载
    发表于 09-20 09:53 4次下载
    <b class='flag-5'>STM32CubeMX</b>的<b class='flag-5'>配置</b>和C<b class='flag-5'>代码</b>的<b class='flag-5'>生成</b>

    STM32CubeMx配置USART1增加打印功能

    STM32CubeMx配置USART1增加打印功能
    的头像 发表于 08-22 10:32 671次阅读
    <b class='flag-5'>STM32CubeMx</b><b class='flag-5'>配置</b>USART1增加打印功能

    STM32CubeMx入门教程(4):PWM应用

    导语“使用STM32CubeMx配置定时器输出PWM波,生成初始化代码。”
    发表于 07-11 15:23 905次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(4):PWM应用

    STM32CubeMx入门教程(3):定时器的使用

    导语“ 使用STM32CubeMx 生成初始化定时器代码,实现定时器特定定时”
    发表于 07-11 15:22 2336次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(3):定时器的使用

    STM32CubeMx入门教程(1):点亮LED

    “使用stm32cubeMX 工具进行代码生成,以LED点灯为例”
    发表于 07-11 14:56 2184次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(1):点亮LED

    CubeMX配置stm32的DAC

    我们使用 STM32CubeMX 软件进行配置。DAC 的配置是相对很简单的,如下图所示。
    的头像 发表于 06-12 09:18 1979次阅读
    <b class='flag-5'>CubeMX</b><b class='flag-5'>配置</b><b class='flag-5'>stm32</b>的DAC

    STM32CubeMX简介和安装使用方法

    STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化
    发表于 06-07 15:43 1.4w次阅读
    <b class='flag-5'>STM32CubeMX</b>简介和安装使用方法

    STM32CubeMx外部中断基本使用方法

    第一步:现在STM32CubeMx配置所需要IO口外部中断模式。
    发表于 05-31 15:32 2850次阅读
    <b class='flag-5'>STM32CubeMx</b>外部中断基本使用方法

    STM32CubeMx GPIO基本使用方法

    STM32CubeMx软件本身生成的源文件中;用户的代码只可以写在以下区域,自己建立的源码文件不受影响。
    发表于 05-31 15:31 603次阅读