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

STM32CubeIDE解析cubeMX图形经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-6 17:33
一、cubeIDE 集成cubeMX
& t) o( J4 M6 A7 M& H        STM32CubeMX是st公司早期产品,现已经成为STM32Cube开发套件的一部分,直接集成到cubeIDE 开发平台省,是一种芯片引脚图形配置工具,可以非常轻松地配置STM32微控制器和微处理器,以及为Arm® Cortex®-M内核或面向Arm® Cortex®-A内核的特定Linux®设备树生成相应的初始化C代码。
$ o, L) {" a$ x4 n' p0 q3 c- ~+ E8 V" G6 n. d6 d
4 w# ^1 }# O$ s% b8 C0 B4 D# B
        STM32CubeMX配置分布过程:
" w: h2 f. x$ X+ }- k* k        【1】选择与所需外设集匹配的意法半导体STM32微控制器、微处理器或开发平台,同时包括在特定开发平台上运行的示例。
2 C6 G& }6 P2 ~6 d8 l
; D& h7 Q0 m  o/ g% j0 v$ U        【2】对于微处理器,允许配置GPIO和设置整个系统的时钟,并交互地将外设分配给Arm® Cortex®-M或Cortex®-A内核。特定实用工具(如DDR配置和微调)增强了STM32微处理器的易用性。对于Cortex®-M内核,配置包含了额外步骤,与微控制器的十分相似。& r2 u. N* z! c0 `
6 c2 c7 ~' [$ v1 {2 U! N1 x2 A0 W
        【3】对于微控制器和微处理器Arm® Cortex®-M,通过引脚分配冲突处理器、时钟树设置助手、功耗计算器,以及用于配置外设(如GPIO或USART)和中间件栈(如USB或TCP/IP)的实用工具来配置各个必需的嵌入式软件。
: {+ F$ J% g0 a, E8 M' ^' i" s
* P2 i" b% Q- n: }+ L0 _        【4】借助增强型STM32Cube扩展包,可扩展默认软件和中间件栈。通过STM32CubeMX中可用的专用包管理器,直接下载意法半导体或意法半导体合作伙伴提供的软件包,其他软件包可以从本地驱动器进行安装。
( T: A% V9 y; {! f5 C, \
# P# o' l3 s: d& `* D2 c: ~. G/ U, U, P# @
        【5】STM32CubeMX中的独特实用程序STM32PackCreator可帮助开发人员构建自己的增强型STM32Cube扩展包。
% @0 x2 |# }1 D! O6 `  ~' P+ ~5 l( Q! l# a$ l
        【6】用户可以生成与所选配置匹配的软件包。这一步提供Arm® Cortex®-M初始化C代码(可随时用于多个开发环境),或面向Arm® Cortex®-A的部分Linux®设备树。9 p, U8 G/ r% L/ C8 }# {! V  d

* O* o3 K. w4 |- i! T4 I+ s9 t
  ?! f; \* V0 Z/ l& H% U
二、STM32CubeMX界面简介" i+ P7 v, E2 e' e' d) H5 e" x
        下面将基于STM32L496VGTX型号芯片为示例,全面阐述STM32CubeMX可支持到那些配置功能。  \$ }3 u; Z0 l/ D/ m5 p

/ {9 l; w" ?' L8 w9 D        2.1 总界面及支持功能
0 [3 D  G) ~, K# ^# b       【1】 功能页面) N  K, J9 l2 n3 t! ]' v

! h- s) |+ h( o2 z: j8 f& N
bb27fb94ea864a8c961c6d6bad57700b.png : O9 C- `( _: o1 i

: s% M  X: v6 |& _" P9 S         【2】支持配置的功能栏目# h8 E+ a5 S/ g' @7 s! n: Q
' n! o2 _1 S6 i
68ac0f04c294405b968ae58f80833c9a.png & U! q8 @6 Y3 r* H$ c8 R( P+ v, U
- \9 J( u$ c. G2 p
         2.2 通信接口外设配置
3 K& i+ @/ R: V1 P6 x        【1】CAN外设5 C* x1 z3 d) S% u( Z
' Q, h6 ?, e1 R
f20a9d248dbd4e959d43ded10f321439.png
7 v0 E, \- e/ ~) X3 d

3 [/ z& }5 S3 Q8 b, x, f$ p         【2】FMC外设# B- O8 Z: X5 ~. \  P* h* [$ X
. k7 u7 ]  N8 Y2 m. Z* G
e8160fed79834ae29282b46b2b8b5126.png
# z* d' _1 D4 G! @  \% O  ^
. {+ ~! x) n  x3 B6 v        【3】I2C外设, V: U' F" D: g8 W
/ Q5 j, X* y  z3 Q, L1 V
58ae51f59bf240aab108b0567d8a0e73.png $ j. w3 w8 @" ?. h. F9 N

/ t1 ~5 Y  O& ]6 ~" _9 u; I- q        【4】串口通信外设(LPUSART*和USART*)3 U2 D6 y1 E3 W- c

5 y# n8 z- q( }; Z) ]  g
c7a53e59729c4b3c9577e7dcf008d7b3.png
: u& N" s9 `4 |7 v9 e2 ?! `

4 n! w+ A6 T5 A         【5】QUADSPI外设4 t* Z4 H" N6 J6 y. ^
, \0 t2 j& N" Y; e3 C( k
b828c26d7cb64ed49cba56766aaae270.png
. ?, u9 P7 d6 n( C9 x1 @
; k! |: m6 |* F6 h8 P! e
        【6】SDMMC外设
7 @3 g5 q8 i- [1 g( @! C' }
' h5 m( K7 ?' Z% i1 u1 z9 Z& |
17446a65177a4aca801a1a151e4044a0.png % ~) \9 Z% m# @) B* h' t8 m# f! g

% P5 E% e% U( Q: `( Y+ ]$ B' B# H) x        【7】SPI外设! r3 ?3 f/ m8 [* _) R6 `  g

6 x* O, R* U' e0 F' q
78713c18aa7540a28bd5ce62b7cf4904.png / E: u! ], ~8 p6 \% i
* e* @  W" M/ c# M2 i/ e( ]9 u
        【8】SWPMI外设
9 D0 D3 H+ u* ^' W+ \0 X+ t+ u' A" x' P1 H" o% F" H
f7c2dc21f1144a22affb9c66576b6057.png " m- V) I) q+ J/ C1 \
$ B: r+ i! b& V' u) B
        【9】USB外设
9 h. W: p, r& c9 f, z: Z" \; Y1 k4 N) {7 B: R, D4 `3 T) v  W5 m5 d1 Y5 k# }1 y
9bd87a6c163b408b95ac44da2aa2069a.png
. `8 y$ m. d4 u$ V. Y0 ~

$ }4 n! L. c8 O3 o0 g6 s4 J2.3多媒体外设相关设置
- w7 o1 L6 \7 i! Q# W        【1】DCMI外设
  s. s6 B8 d6 ^( G5 J' A; I+ s7 p
09f0135d0a674579b05c30266a264c90.png ( y7 G+ W2 v' l' x- e$ h- R) p
" X7 a* \7 k( x: ]! J9 q) ~4 d2 J5 ?
        【2】DMA2D外设
: ?7 G, p' z: L* O6 i: L: j# t! u, g- N/ d1 f( G
a9923ea0dc034b1b9fa7eccb8bc728f8.png
4 w5 j# [" T& g
& h9 y- N8 R3 U2 P; y1 c
        【3】LCD外设* a* w+ {: J4 s% `3 o0 {) j
! d( P7 J  P" f$ _# G, g" ~3 |6 T
fcacb89ed45e43b2a06d7759f37cb3ae.png 5 U( n1 ?# U# P& _
/ x& X3 p* W4 k9 `
        【4】SAI外设
6 D# s+ W; s0 ?5 Q) I2 V. J& v( p, T  P7 v# O
d26ca4298bee4bde81306ba5551849b0.png ) T- m& p, B7 k% g+ K8 Z
5 i$ d  P9 ]0 O9 g. T3 l) o. `
2.4 计算功能相关6 R6 x; r! z) V. t& r% H
        【1】CRC校验计算
9 c* @" p, g- b1 V0 `. \
* b! W7 w# D  Z
9169a2d7336e41d6b1bb9aad83f1e287.png + [: y: `/ `# o* T0 i, ^

6 p2 ?' Z6 o0 G6 d- m        【2】DFSDM外设7 x- t! E4 c% C% X2 \
        DFSDM(Digital Filter for Sigma Delta Modulators)数字滤波模块,配合外设配合Σ-Δ器件的使用。/ r. m. }4 z  w6 N6 D& b
7 H  n0 a2 }& |5 B, r
f40a702851904e1dbf5f3425fc50f586.png
& v# x6 S! D% S" k2 g+ B9 J0 E, |
2 d6 c3 O$ M" x8 [/ M9 L
2.5 中间件功能相关  J; Z$ y" L  k
        【1】文件系统
+ R+ l2 ?& }; v) O, H
6 V- r$ t. S% i8 I" A1 X
0721a93d86d24ba9b0f1a31b5caf47b9.png
: l+ d1 V, e$ Q, m
5 u; V4 O6 u' h3 `- T* G, S3 b- e" E
        【2】嵌入式系统(FreeRTOS)  H  R/ R5 u; ~! k: g6 B
2 m* `$ M: @3 H" `1 g
56a43a3bbd1c44f7a22c6afcb71a3afb.png
* J. V* Q, J4 P; M( P
6 o  h1 d3 x$ _. H' \5 @# x        【3】触控感应* c* b1 ?9 t$ C( a2 i

( A) D# X$ {2 P; w( ^  A
ccd2d10142384d31a746f2e05d38dc09.png : O3 o' P+ U2 F/ ^% T
0 d+ f( N! G1 k' ~2 `) X& A# o
        【4】USB(USB设备、USB主机)
1 r% _- F- o+ B7 L4 N
" j' c) v/ b! I' I. p
aeaffe28c4f2498180033a6e11b12b26.png
' ^. y0 ?& [% K4 P& `. }9 B
' P  Z* O# M0 g# y! Z2.6 定时器) l, L/ @0 t! g* b- ~' b& {" Y5 U
        【1】低功耗定时器
2 r8 i1 l. j% \- M+ E4 k; ]: Z# D4 ^- T# a! X& `$ p
392bc32f2d4e4d4eb07863931fc4d142.png
8 _8 O" V( t0 j7 W+ o
4 A2 Z3 U& D( ~! n3 t9 [3 w9 b         【2】RTC实时时钟$ ?: |1 K- m' S& T& M

% N* F" [& E1 h( a9 p
7e1c8b361b0a45d9857501496de7aa40.png
% t2 _0 q: K. z# t% u$ {

" f1 }8 Q0 T) e- C- \6 `. o! A9 J         【3】普通定时器; i/ N1 n. h& Y9 |  v) b& ?  R3 `
               STM32的普通定时器分为高级定时器、 通用定时器 、基本定时器三种。这三个定时器成上下级的关系,即基本定时器有的功能通用定时器都有,而且还增加了向下、向上/向下计数器、PWM生成、输出比较、输入捕获等功能;而高级定时器又包含了通用定时器的所有功能,另外还增加了死区互补输出、刹车信号。0 ?) z7 i( u* Z" p& t+ y
7 w% A: F, |# m& o8 Q
e7078e64c48d4f4b803680e48e414595.png 0 @/ o  C5 ^% g, z$ o" A4 m

! U8 z+ I- f# U8 T1 [ 2.7 系统内核相关
4 m& E4 }/ [/ B! \: y1 a3 ^        【1】系统4 i9 b4 @* R. D/ J/ V0 K) W
* \5 G# Y* B2 D8 l: t
f2a2c830818e4adb8d7eaf22264afc97.png
4 |; D  f. s$ k/ @4 n4 N# M
' {, z8 B1 v# j* p; U/ x7 J* K         【2】系统时钟设置
- I. D$ \. S9 A8 v5 d
8 N9 q4 s) S/ ?
84391938cc0f49288d1e46b89849f58b.png
$ U3 p- D) T* m# a3 \' u
) p7 f6 n* t' {; A         【3】中断功能总述
0 \& f* {( U# W& ~( M: J! X( G! K, L) b6 R" l4 h% |; v' N
205235132a7f4518b3b2997849a9a1d6.png $ L+ ?5 @0 l" z2 m5 k" T' o, p

+ ]/ z/ v" S8 K  F& m4 j8 a        【4】DMA功能总述" `" `; c8 }0 h; }+ G: p

6 s# w' H, j, Q; d- b. y- E5 \+ E" F
b51b830a9bff4059bb26cc893bc45c3b.png 4 y% C& p, K' P
4 l5 c: p/ Y$ f5 n
         【5】GPIO引脚配置总述$ L2 u- P* J' ?" B0 V! \

/ c6 T# |6 k- f! @" p/ B) g
f9548c5ce1a94bb8a09735c59f3e79cf.png 8 k( R- P) b% }) C/ e4 S' t: y
3 P( A( ?, k! K% f
        【6】看门狗(独立看门狗(硬)、窗口看门狗(软))
* J3 j& P- `$ ^' h9 D/ d" L4 s; A
6ebcbc58e63b416387d6ff0a011c5da8.png
. I2 s  ~/ h- ^. V9 a
" ]! p! i, @1 d: S        【7】User Constants
1 q- U$ |: H0 A! D        各个外设及功能都支持自定常量,其实就是在图形配置设置宏定义,各个外设及功能配置页面定义的User Constants均会在main.h中#define声明。
/ H, X4 T) a: t9 s, V6 ^: @9 {* O4 C  l
24fc8909e871473396b149fca6fbae5c.png 0 Y' s) w. N( I

) z3 G. E: h. C  @9 x: L2 R 三、时钟树设置8 p* c5 o; [) O- s
        时钟树综合配置,各个最终频率是否生效取决与前面外设功能开启及配置,最终频率数值则由时钟源+各个选择器、分频器、倍频器加权后计算得到。当使用外部时钟源时,必须先启用它们 在RCC外围设备上可用的引脚视图。
6 c! h$ C. W+ u( R8 M0 ]9 f5 A2 H
2 N' k& M4 [  O( M% S6 K1 }
665f993b05524f8c9d18318cc29724b4.png
- ?6 U; R. y5 _6 X9 w4 f2 K
3 J8 w2 H" A9 z6 X2 A        当MCU支持时,启用HSE上的时钟安全系统(CSS) 只有当HSE时钟直接或通过PLL间接用作系统时钟源时才能使用该功能。 它可以检测HSE 故障并通知软件,从而允许MCU执行救援操作。 当MCU支持时,在LSE上启用CSS 只有当LSE和LSI被使能并且RTC或LCD时钟源被选择为LSE或LSI之后,该功能才可用。 . U" P4 x# n8 \7 o, G

: g1 A+ m) H) H0 F! d$ p
! @3 n; T' G4 p6 E6 z3 ?
四、图形窗口设置9 F3 p. T  ?; M+ X6 W
        4.1 软件包! b. V$ n$ F; r& m) I: }

# d6 o7 H5 I2 R
192217e246d44bc48520bae2cadd44a8.png
2 r! L9 j9 G- x; i

8 P- l0 J- X, d) p5 s0 U5 j) B. `        4.2 端口视图
: U. g8 v: U" ~# R% R' k; z* {
        pinout菜单主要就是针对引脚图形配置界面提供的相关快捷功能或显示功能设定。, A3 f4 x% b, A( P4 U
3 T! W# q8 F7 K: g
22de6c0299054382a2214c7fd2d28886.png : u- i, B; a: d! k

$ a5 C) Q: d: l/ j0 X, K: E6 q4 y; j        4.3 系统视图4 k. Q- v6 {4 ?1 n
        点击已开启功能将会自动弹出相应的外设或功能配置页面。" S) J$ ^8 S. [2 e& E- ]2 R

7 \" H! H( G5 F. Y: X( u5 g
4f21955b5008478f80d5c38cee2161c8.png
7 c4 X4 o7 x# L/ b7 o* E* m5 J8 W& n1 i( q/ r  _
五、工程页面配置, @" N, [! e) }) ~& t
        5.1 工程配置
2 b& h8 }2 a0 Z6 |+ R

% q1 V3 k2 o; b$ \& A/ |
227f5438abcb4edf801bdf3d7c9cda57.png 9 k2 u7 W, a7 n2 }
, [* q# _% _) ~9 M9 N
        5.2 代码生成页面
- S  M! c/ A0 g/ N
$ W4 d! |% T1 ~) H5 h
f542ab24402045cabb254c594d25c5bc.png
8 G' x; U9 a6 ^. u8 D7 u

; U* e6 p  g7 M  P4 B( ^1 u        5.3 工程高级配置页面' O% ~$ `5 r$ e
  q: @, d# \) Z
ae87c7439b004ab0921e83e1babc7325.png 8 }3 e; g$ U. E& `6 e
; d. c! }' [, I' s" D9 N
六、生成代码概述说明
& e6 G& Q* S4 E8 ~0 J. d        在C代码生成过程中,STM32CubeMX执行以下操作:
- \( C6 _- }$ }        【1】 如果缺失,则从用户存储库下载相关的STM32Cube固件包。 STM32CubeMX存储库文件夹可在帮助>更新器设置菜单中指定。
/ Z( C$ }- G, {" r/ |0 A$ d& U8 K  ^        【2】如果选择了中间件,它将从固件包,Drivers / CMSIS和Drivers /STM32L4_HAL_Driver文件夹中的相关文件以及Middleware文件夹中复制。
4 z5 B' p( E* D* N3 q1 e- I, v        【3】它生成对应于用户MCU配置的初始化C代码(.c / .h文件),并将其存储在Inc和Src文
4 j# P0 u1 E3 b4 r+ J件夹中。 默认情况下,还包含以下文件(具体文件名与芯片型号有关):
! W8 N( u* j# ~* t) c: R4 p0 R
! b% m- G) r. R' f- a6 A – – stm32l4xx_hal_conf.h文件:该文件定义启用的HAL模块,并将一些参数(例如外部高速振荡器频率)设置为预定义的默认值或根据用户配置(时钟树)。
9 C6 u0 e2 \, ?7 A* ~– – stm32l4xx_hal_msp.c(MSP = MCU支持包):该文件定义了所有初始化函数,根据用户配置(引脚分配,时钟使能,DMA使用和中断)配置外设实例。) S8 n( O; P) t
– – stm32l4xx_it.h/.c文件:中断处理程序
' n2 h6 T9 r8 ?8 ^( O& s' r* o – – system_stm32l4xx.c文件:实现SystemInit、SystemCoreClock、SystemCoreClockUpdate相关函数及一些全局变量。% @, T% O* `4 J7 t$ r
– – sysmem.c文件:系统内存调用函数实现
. n3 F3 ^' x' R  O; H6 c9 d, U& { – – syscalls.c文件:最简系统实现,使用标准C库函数! s- Q" X: ~$ e7 S
–– main.c负责:
* m9 T: b. l1 i/ _! _$ ^1.通过调用重置所有外设的HAL_init()函数将MCU重置为已知状态,初始化闪存接口和SysTick。1 Q9 T7 O, `6 Z( M3 y
2.配置和初始化系统时钟。
3 t* m9 N6 x3 M0 l3.配置和初始化未被外设使用的GPIO。
) f  k* ~! O5 E# h) @& R4.为每个配置的外设定义和调用一个外设初始化函数,该函数定义一个句柄结构,该句柄结构将被传递到相应的外设HAL初始化函数,然后调用外设的HAL MSP初始化函数。 请注意,当使用LwIP(分别为USB)中间件时,底层以太网(分别为USB外设)的初始化C代码将从main.c移至LwIP(分别为USB)初始化C代码本身。
+ S- E0 t: h3 `# e' D – – main.h文件:该文件包含与Pinout选项卡中设置的引脚标签相对应的定义语句,以及从Configuration选项卡添加的用户项目常量。
* Q2 d  d$ r6 ?9 v. p: ?6 V' F0 H        【4】最后,它会生成一个Projects文件夹,其中包含与用户项目设置相匹配的工具链特定文! }0 s8 e6 |/ @: D
件。 双击IDE特定的项目文件启动IDE并加载准备编辑,构建和调试的项目。" v- L! k% v0 @# u1 L
————————————————; d& V% L$ z- ?9 V
版权声明:py_free-物联智能
8 w- ]8 u: l6 K9 W( t如有侵权请联系删除" j+ O+ H" }* Q

+ A( K; ~6 Z# x% e
- z4 S+ g" I9 e- Z3 q# f2 y  R4 @
赞 收藏 评论0 发布时间:2023-4-6 17:33

举报

0个回答

所属标签

相似技术帖

官网相关资源

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