你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 STM32CubeMX 生成配置代码的文件结构

[复制链接]
STMCU小助手 发布时间:2023-2-14 13:44
1. 前言 在阅读 UM1718 文档的时候,发现 CubeMX 有个比较好的功能,可以用“.extSettings”文件配置生成代码的工程文件结构。只需要要配置“.extSettings”文件一次,后续不管使用哪个IDE(只要是 CubeMX 支持的),都不需要再手动配置文件结构或包含头文件路径了,并且可以保持对各个 IDE(只包括 CubeMX 支持的)配置的一致性,减少工作量。也有客户询问怎么添加工程文件的问题,考虑到可能有些同学不太了解这个功能,所以本文对这个功能进行介绍。% @- e6 \1 y  N4 ?: w  Z+ h
, O: v- R1 T7 Q+ P5 r" ~* M, q
2. .extSettings 文件的作用
+ r: e" Z/ }+ V* B0 c1 ]% V' ?- k “.extSettings”文件是对 CubeMX 配置的补充,是在 CubeMX 配置的基础上进行的额外配置,不是替换 CubeMX 的配置,这点需要注意。
' B( c% }$ r1 S4 [5 i总体来说,“.extSettings”文件中的配置包含三部分,分别是[ProjectFiles], [Groups]和[Others],下面分别对这三个部分的功能进行介绍。
$ e* M) k! E% \7 U7 n5 l6 o0 t( i) H/ H: U
% z7 i% b! c% |$ R1 l* c: j
2.1. [ProjectFiles]
6 S5 _, h3 y: D# M# r/ X" \ [ProjectFiles]这个部分主要是用来包含一些目录,例如头文件存放的目录。
+ V+ Q2 J: j, g4 m+ [$ e4 [$ I 语法:HeaderPath= ;  
" E: s& c; Q) w: W6 D) c  R示例:HeaderPath=../BSP/STM32H735G-DK ) }1 }7 }0 M# g9 y$ `/ ~! O9 d0 o
说明:这里的路径是相对于“*.cproject”或“*.project”文件(如果生成的是 CubeIDE 的工程代码的话)的相对路径。如果生成的是其他 IDE 的工程代码,则这个路径是相对于其他工程文件的相对路径,例如“*.eww”文件(IAR)或“*.uvprojx”文件(KEIL)。
* \# o) N# l. ]) R- ]效果:在“.extSettings”文件中添加示例中的内容,重新生成代码后,效果如图 1,红框部分是通过 “.extSettings”文件包含的目录,可以看到已经被包含到工程中。
7 y8 d6 U/ E6 d- `: V1 @' h! V9 R: M8 c: x$ u
4 v5 ]5 f5 l$ A$ ~, e* ~
M25TJDWG[HEIBIx`SRW]E.png ( S' F" K! W+ ?5 Q
7 B+ w2 q' M0 ^# b. J1 p( `4 K& ]
2.2. [Groups] & E+ L9 a* T) h) v, ^
这个部分主要是用来在工程中创建文件组并且将文件添加到文件组中,用来组织工程的文件结构。
* T# L$ f: I2 c语法: = ;< file pathname2> ' T! A5 D6 ]0 L  W7 Q
示例:Drivers/BSP/STM32H735G-DK=../BSP/STM32H735G-DK/stm32h735g_discovery.c; 4 I" m, ?! V) V. }. e" l+ a. F
说明:是工程中的文件组名(若不存在则会自动创建);是文件路径。示例中语句的作用是,嵌套创建“Drivers/BSP/STM32H735G-DK”这个文件组(可以多级嵌套创建),并且将“stm32h735g_discovery.c”文件添加进这个文件组中。可以在一个文件组中添加多个文件,只要多个之间通过分号(“ ;”)隔开即可。
& m9 Z" x6 D6 _5 _  D 效果:在“.extSettings”文件中添加示例中的内容,重新生成代码后,效果如图 2。
. _, G) j; B, _" [
3 l* ^3 T$ N. }1 q( }, b' @, r  C

5 ]- B+ P0 n7 k( m: G P@%MBK9Y}P8L(~5KPWX8WAW.png
% o- k. {; S* E# W, ^) b* y
% G1 H4 M; S* Q) {$ y 2.3. [Others]
2 Q; `! G$ `, U9 }" u% k! n# C+ b[Others]这个部分主要是用来使能一些 HAL 模块和添加一些预处理定义语句。
$ y  {  P+ y" ~1 M6 d& Y9 s9 r3 j3 o' e* L
- m0 g  Q; [3 X! V$ J
2.3.1. 添加 HAL 模块。$ ]! \# |8 r1 f6 F$ I' N9 [
语法:HALModule = ; ;
. d: O# a4 v4 T* d7 Q+ m& ^示例:HALModule=SPI;ADC;
1 ?) B3 P" L8 P效果:在“.extSettings”文件中添加示例中的内容,重新生成代码后,如果使用 H7 系列的芯片创建的工程,则会自动在 “stm32h7xx_hal_conf.h”文件(如果是其他系列的芯片的话,名字会略有区别)中添加“HAL_SPI_MODULE_ENABLED”和HAL_ADC_MODULE_ENABLED”这两个宏定义,作用是在这个文件中包含 SPI 与 ADC 的头文件。如图 3 所示:& j$ K; G+ m& d( \: F
# ~7 B0 O! F  [5 K! h7 ~" N/ S3 |- e

$ U; p# Q! _7 c. P9 F7 {% T TE[K@TDT`9MZH`A~VSM[~{Y.png $ p9 {. u. ^! T2 x( `# m
2.3.2. 添加预处理定义语句
, {8 O# I0 a! f4 q7 I* \! {语法:Define = ; , p2 x! ?! c, c; A  w6 b( j  D+ y
示例:Define=TEST_STM32H735G_DEMO
( H: ~) K/ Y. E) c. G; X, v效果:在“.extSettings”文件中添加示例中的内容,重新生成代码后,可以看到在“.extSettings”文件中配置的预定义语句已经被添加到工程中了。( q( m4 @9 \4 V: R% {
/ q* J; b7 _* S& {; @# U# y& O
O%WZJQ]K0(QYMZ])1BNJBHX.png " P9 |, ?) _9 C3 K% F$ _4 C

, A! }' i& N5 t3 B! ]: a
6 {5 f9 X0 i5 G
完整版请查看:附件 使用STM32CubeMX生成配置代码的文件结构.pdf (669.12 KB, 下载次数: 3)
赞 收藏 评论0 发布时间:2023-2-14 13:44

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版