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

【经验分享】初学STM32H7的准备工作

[复制链接]
STMCU小助手 发布时间:2021-12-25 10:45
1.1   初学者重要提示

1、  关于学习方法问题,可以看附件章节A。

2、  学会 STM32H7相关资源的获取方法,做到心中有数,否则心里老是没底。

3、  关于MDK和IAR两种编译器,推荐都掌握,以其中一个为主,另一个为辅。因为很多时候我们需要参考的工程代码不是自己熟悉的编译器,就会很被动。

4、  相对于F1、F4系列,H7最大的区别的还是MPU和Cache的配置,这两个配置会贯穿整个教程为大家做讲解,而外设的学习大同小异。

5、  H7携带了DTCM和ITCM,ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上的其它RAM主频都是200MHz,所以要充分发挥TCM的性能。

6、  STM32H7系列只有HAL库,没有再配套标准库了,这点要知道。HAL库的优点是配置方便,特别是配合图形开发工具STM32CubeMX时,缺点是源代码稍显臃肿,封装的有点多。

7、  这几年涌现出好几款非常棒的调试工具(如Event Recoder,SEGGER RTT),教程的后面章节会为大家做讲解。

) y. Z. \0 p6 a0 U8 u+ Q
1.2   开发环境说明

1、  IDE:支持两种IDE开发环境,MDK和IAR

        a.  MDK推荐使用MDK5.26正式版及其以上版本。

        b.  IAR固定使用IAR8.3版本,由于IAR向下兼容性稍差,其它版本未做支持。

2、  调试器使用JLINK,CMSIS-DAP,ULINK或者STLINK均可。

3、  配套开发板是安富莱的:STM32-V7开发板,MCU是STM32H743XIH6。

2 h. M6 ?. r; l8 M" C) o7 \1 \9 Z) B' ]8 g

1.3   STM32H7和F1,F4系列的区别

使用STM32H7跟F1,F4系列的区别。

1、  最大的区别H7是多了一个L1 Cache一级缓存,这个缓存在为低速存储器带来加速的同时,也为程序设计带来了一些问题,其中最为主要的是数据一致性问题。

2、  STM32H7的自带外设比较之前的任何STM32型号都要生猛,算是大换血了,换了ADC,DMA,USART等重要外设,性能比之前要强劲很多。比如ADC换成了3.6Msps 16位分辨率,DMA支持任意互联了,USART也支持波特率自适应。

3、  到了STM32H7系列,ST官方仅提供了HAL库,没有再提供标准库,而对于F1,F4系列,标准库和HAL库都是有的。

4、  F1是M3内核,F4是M4内核,而STM32H7是M7内核,从编程的角度来说,几乎没有区别。
7 ^& }$ b0 G8 ~: E2 w6 s2 Z

6 ^6 L' B9 P7 q' Z; z: e  B

总的来说,主要有上面这四点不同,其它地方与使用F1,F4系列是相同的。

" ~0 F* ^1 S5 w

1.4   STM32H7开发资源查找

学习一款新的芯片,需要大家从官方获取两方面的资料,一个是相关的技术文档,比如参数手册、数据手册、应用笔记等;另一个是软件包,官方在软件包中提供了外设驱动库和基于此库的大量例程。

- @- t& ?  r  R9 ]" L

1.4.1      开发文档

学习STM32H7主要下载哪些相关手册呢?主要有以下几个,这几个手册是我们经常要使用到的,不光学习STM32需要这类手册,学习FPGA、DSP也是这些类型的手册,熟练查阅和使用这些手册也是电子工程师必备的知识之一。


5 ?3 D: a0 E4 D

参考手册(Reference Manual)

对芯片每个外设的具体描述和功能介绍,比如我们要查USART,SPI,DMA相关寄存器和功能的介绍就可以使用这个手册。


# U) y2 ]. o3 m: P

数据手册(Data Sheet)

在我们要画PCB的时候用到这个手册的情况比较多,这个手册上面有关于这个系列芯片的引脚定义、电气特性、机械封装、料号定义等信息。


' T1 K- N5 Q7 s, W  n

勘误手册(Errata Sheet)

描述了芯片某些功能的局限性,并给出解决办法。这个手册也比较重要,有时候我们觉得有些地方调试老是出问题,就需要查找一下,看看是否是硬件bug。

. c2 F; f  T0 N" G! N7 X9 E$ _

闪存编程手册(Flash Programming Manual)

芯片的片上Flash操作指南,比如芯片的擦除,编程,闪存读写保护,选项字节信息等。

- a; k  f# q: u! J5 Q# e

内核编程手册(Cortex-M Programming Manual)

对内核的系统控制块的介绍。这个手册有时候也要用到,比如我们需要了解NVIC和SysTick相关的寄存器,就需要使用这个手册。这个手册可以在ARM官方网站下载,也可以到ST官网下载,区别是ARM官网下载的手册是通用的,而ST的是针对自家芯片做的。有时候在参考手册上面找不到相关寄存器的信息时,就需要用到这个手册。


, I* Y7 m: n$ x1 L# R0 d

应用笔记(Application Note)

针对不同应用主题的描述性文档,部分笔记还会有配套的固件例程。应用笔记的重要性不言而喻,很多时候官方对一些应用做出了解决方案,都会以应用笔记的形式发布。

5 B4 K, m, E" u. u5 I

用户手册(User Manual)

一般是对某个软件库的说明文档。

- M9 X8 O% `% H# c

Cortex-M3/M4权威指南

这也是非常重要的参考资料,对于有兴趣了解M3/M4内核的同学,这个资料相当重要,了解了内核才能更好的利用M3/M4。虽然是STM32H7是M7内核,大部分内容跟M3/M4都是一样的。

了解了这些手册的作用以后,我们学习如何在官网上面查找这些文档。前几年ST官方升级后,通过页面超链接的方式查找非常不方便,当前推荐直接在官方右上角的方框里面检索即可,比如使用的是STM32H7,直接输入STM32H7检索:

第1步:进入ST官方地址www.st.com,右上角输入STM32H7检索。

第2步:检索后会弹出所有STM32H7的芯片(随着时间推移,会增加新型号)。

第3步:比如我们用的是STM32H743XI,点击进入第2步截图中的STM32H743XI选项即可。进入后,所有的相关资源就都在这个页面下了。

基本上大家所需的开发文档都在这个页面下了。


, P$ |5 _; w7 {. p; H7 |8 I. r2 n

1.4.2      软件包

通过上面小节整理完毕相关文档后,就是STM32H7软件包的下载了。软件包也比较好找,同样推荐1.4.1小节的方式。

第1步:进入ST官方地址www.st.com ,右上角输入STM32CubeH7检索。

第2步:检索后会弹出STM32CubeH7的软件包选项。

第3步:进入STM32CubeH7的页面地址后,就在页面的最底端看到这个软件包了(随着时间推移,版本会不断更新)。

第4步:点击按钮“Get Software”后,弹出如下界面

点击ACCEPT进入下面界面:

点击Login/Register

通过上面四步就获取了STM32H7的软件包。软件包的目录结构如下:


7 X' Y5 l5 ^) P$ C& `5 G

1.5   HAL库介绍

HAL库就包含在大家下载的STM32CubeH7软件包里面。软件包的框图如下:

HAL库全称Hardware Abstraction Layer,即硬件抽象层,其实就是STM32H7的外设驱动包。代码文件位于路径:Drivers\STM32H7xx_HAL_Driver。如下是部分截图:

单从人性化角度,这些外设驱动写的还是比较用心的,特别是每个C文件开头的使用说明。比如文件stm32h7xx_hal_gpio.c开头的说明:

$ R! Y9 h& s% o  F

  1. 1=====================================================================8 ~% i! K2 {7 X3 B+ @
  2.   2
    $ [" i1 }; r; B5 r) y: F' Z1 ^
  3.   3                     ##### GPIO Peripheral features #####: y5 L/ ]$ U0 U6 I: E. g
  4.   4
    # Z* `% d' Z6 z8 y
  5.   5======================================================================8 ?8 ]7 h% j* i
  6.   6 ' q5 B* g# }4 z9 T6 D
  7.   7   [..]
    0 D. d% _- u! Z4 a
  8.   8 ) B. i4 m7 w$ V# F% ^9 m7 g
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each
    ' U4 J/ d6 q/ \+ b% O' f& H( U* J
  10. 10 5 ?$ f! `2 Y- u" N
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software9 K- c3 w- w, ?6 F6 G
  12. 12
    9 T- |0 H" g! m3 u$ `2 t
  13. 13   in several modes:+ E; Z$ D8 S) @* u( r! k( k
  14. 14 # \) P  P3 \! H/ H
  15. 15   (+) Input mode& w5 L" l8 o! M& q+ U! {
  16. 16
    0 G9 ]5 Y; ~: N3 c
  17. 17   (+) Analog mode
    6 M: ], \& a) S2 H& h# \, v4 [
  18. 18
    5 I/ L; t& v) I- `' g# C, q
  19. 19   (+) Output mode- r3 W' q4 N0 m7 B1 h2 x) [/ T
  20. 20 ! F# R% `8 C  O
  21. 21   (+) Alternate function mode) T0 K, X# s3 x9 v5 b4 O1 z! h
  22. 22
    3 m2 h5 [, E+ R) q
  23. 23   (+) External interrupt/event lines% A1 g. D' v- ]' b2 V1 z
  24. 24 . Y7 C8 u/ e, v6 S3 p
  25. 25  , G1 x! F1 \2 c; Q
  26. 26
    2 O7 A( I# ]; d" K' s; @
  27. 27   [..] : ~* Q: j$ r) ~: R4 F/ `
  28. 28 . U% R% g& o/ P) D& u+ R2 m
  29. 29   During and just after reset, the alternate functions and external interrupt
    1 z, `0 P6 n4 f4 D# F$ W
  30. 30
    % q8 D# g2 {/ I# R  t
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    ' D  T4 T; i# S) o1 e- O8 ^) O2 `& i4 Q
  32. 32
    $ {( v# A! f! a3 W
  33. 33     2 g8 B$ u4 p  ]" O. B2 I
  34. 34 . f# K; W8 t4 z/ ^! F
  35. 35   [..]   / a4 Q/ C" _. t
  36. 36
    , L: y+ ?; M& A6 A" |9 R: n) R
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be
    2 L2 O* u- w4 w$ y! C% L) `
  38. 38 % @3 R- t& t9 c' U! ~! G2 E
  39. 39         activated or not.) o; F9 N: U: `( T  ]2 Z
  40. 40
    : u6 |+ w8 L# y/ F: h, u% W
  41. 41  
    6 U* e8 j: J! k2 ^
  42. 42
    % W  H( O; `# W! V( Y" A- [% X" f, o
  43. 43   [..]1 z) C& V& z- U: V; G
  44. 44
    * F0 v  v3 s  l# R: Z
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull5 c& C! v# Z& m' ?; r: z
  46. 46 , g7 b5 O% D# T/ P4 `3 }! o
  47. 47         type and the IO speed can be selected depending on the VDD value.$ n2 u) }5 j4 B* V% _" P" \
  48. 48 + n4 I% j0 d( A8 m6 P
  49. 49  
    * J+ G- D% T6 h9 \
  50. 50 & K8 R8 T- y; A/ r6 u0 \  U. k
  51. 51   [..] 9 C5 I: t5 |$ i) X) L& y
  52. 52
    $ ^( y8 M: k/ B2 m* W$ H4 n
  53. 53   All ports have external interrupt/event capability. To use external interrupt7 b' j' g; o, P; `
  54. 54
    . L( w' e6 u) B, f8 x" b' o2 {6 D
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are1 Q* i4 Z' ]% O  C7 Q- A$ X
  56. 56 : z) n) K- a; T
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.
    , E' a( x1 d/ B2 \; n7 U
  58. 58
    4 V; }/ Z( z- D3 ~
  59. 59  , s3 b# E/ l4 S* G
  60. 60 5 n4 A" k" P" m* @
  61. 61   [..]
    # W5 |& e( i  J' @7 p! |
  62. 62
    % u/ j4 t" T( ^0 A2 [: T$ x
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors1 j6 a2 B1 A7 ^6 H1 M
  64. 64 ( {& X8 q- C: H5 n  W' P
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each4 T6 Z$ K0 T# o( C' S$ m
  66. 66 1 k, P* D: o5 X& @1 g
  67. 67         input line can be independently configured to select the type (interrupt or event)- G5 \+ D- R0 z. E. P
  68. 68
    ) Q0 }. f( p' m5 Q( H) U  N
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can6 U  U) |* d' c4 b+ O, W
  70. 70 ' J# D' u1 y. }
  71. 71         also be masked independently.
    7 L& {" l; l' O
  72. 72 7 A) s3 G2 k9 ~! m; u5 M
  73. 73  
    8 Y: f: E# J0 X9 o
  74. 74 7 K( r9 M8 D7 g+ `: E5 z0 y1 k! M) U
  75. 75                      ##### How to use this driver #####* b9 R: h- f" J
  76. 76
    ) N$ w) X! P8 X2 o$ T
  77. 77   ============================================================================== ! ~/ E6 @: O% c$ Q3 A/ @% G8 O
  78. 78
    7 f: ]% q& D9 I. c  z
  79. 79   [..]
    4 Z) s: t8 y. R+ ^6 B5 N
  80. 80 0 x0 T, P; r' L# ^) a9 o8 I* X" B
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().0 M, f% n$ g- _& m: L, W
  82. 82
    ! e9 F5 t# N  c' F* d+ h; M
  83. 83  
    % g, `+ w8 `* Y: G
  84. 84 ; W; P. [8 k8 X- x# f( _: k9 F! o
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().- H: `4 U" e5 i- K
  86. 86   _2 t# U- L* |) H3 N
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    ' A1 y/ F; |1 t( u
  88. 88 ! n: J2 x- c6 j+ E6 d
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef
    1 R* K  J1 [3 V7 c5 T
  90. 90 ) R. z  z, H" g$ [6 N2 @0 k3 y
  91. 91              structure.  v& O) _! E: C2 E
  92. 92
    # a: l1 n* _0 I. d- ]' C4 g
  93. 93         (++) In case of Output or alternate function mode selection: the speed is$ g1 k$ w8 v" U' V
  94. 94
    0 h; j# c- K* @2 l" ?6 s3 W
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.
    7 `- ^5 Q; ]7 T% r; c9 L- F
  96. 96
    + M2 ?/ J, B$ V5 O$ C
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO' i# k" n3 t8 i
  98. 98   ?: }6 Z$ Z, N6 }2 C) {
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.
    & P/ S4 Q! f( I7 m* }6 z+ m/ r+ a
  100. 100
    % Z" z( n3 u) S
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel  J& D) W' S6 b* s5 X& A
  102. 102
      a' G( O) o6 U5 \7 H/ Z
  103. 103              or DAC output.
    - m) d( X) ?  ?5 _, o; J
  104. 104
    ; h  G4 G: i! B5 Q9 |1 V
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from
    ( H/ j& o7 T: [: F/ z
  106. 106
    2 e0 y& ^4 {6 L/ V. u4 `( W9 _- K7 c
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and
    : ~1 A% ~- l1 N0 Z* i
  108. 108 : ?' l  g6 o# ]# U2 T& j' ~
  109. 109              the corresponding trigger event (rising or falling or both).  u. l! J4 m2 D% h( A
  110. 110
    7 Y: l: Z* R; F
  111. 111  ! S# ]) q; u2 [. F2 N
  112. 112 $ a+ v# D+ t- T4 ~' [! d4 x
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority
    5 ?1 T+ z0 m0 a
  114. 114
    ! X# r$ O$ K' S8 y# L! p
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
    / A6 n/ g3 B$ w! [5 N
  116. 116
    / w# h4 S8 ]/ L: Y" k
  117. 117         HAL_NVIC_EnableIRQ()." B2 ?0 Y% G  b! r; X7 d. m
  118. 118 , d" c3 W4 k% S' B! a8 }/ w' E
  119. 119         
    ( M. b7 B( F, N, z
  120. 120
    ' D" M& a4 Y) U# B" @
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().* W( n6 [7 n+ @" i
  122. 122
    . n3 B) [3 r, M* `
  123. 123            
    / s- P8 z$ D7 ^7 R9 ^
  124. 124 ! M. u( ]* X/ ~, ~( I1 K* a# \
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    + D6 h( M8 ~6 Y1 g
  126. 126
      d0 W+ k7 i& G3 V
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().
    6 ]* C4 B/ h- W8 U: e5 Y
  128. 128
    ! f4 W- c+ r! P* k, u& T9 ?' B
  129. 129                 8 {; `6 k3 v. B# X
  130. 130
    3 O0 p( `$ c- W* `* O$ O
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().' \1 P$ F4 u% ^/ q. B! f- P+ M7 k- l
  132. 132
    - Q/ W& j0 \! |2 K) A' G6 d- c+ `8 x
  133. 133  ' j) h' E* i5 q/ ?  d- K( }
  134. 134
    0 G) ^) M6 ?9 h4 Y2 |0 {8 P
  135. 135                 
    ( g; C, w5 o4 {  O* U" z
  136. 136 5 F& ^& M4 D$ }8 H; z* ^
  137. 137     (#) During and just after reset, the alternate functions are not" q; M# t! A" l0 q
  138. 138
      r$ K$ j9 a0 f
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG
    ; \. ~2 ~$ r& x9 f" I
  140. 140
    . I  O0 Q+ U- l2 ]" P9 A
  141. 141         pins).* k( N7 W2 h1 k! W' W) {6 M" K
  142. 142 0 w- _& E2 M( ^4 v
  143. 143    P% a+ l& ?1 ?
  144. 144 : {' E& K7 R) I
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose$ y+ h$ E; ~- _7 c% [# G
  146. 146 ' o) _- H! o. n4 W+ y- W
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has1 H! Q( }5 q$ }' H" k
  148. 148 0 M7 L7 ^5 f/ a/ s* u: A6 ~
  149. 149         priority over the GPIO function.! O+ }# q; z) V7 ~) K2 I
  150. 150 8 q- P2 P0 i4 f8 ?
  151. 151  
    ; m8 y5 b9 S6 _& U
  152. 152
    3 {; L/ w6 w- Y4 [  g3 ^2 c
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as% f# O2 P" Y4 T% a" E+ O& E
  154. 154 $ V7 `# P8 C! |. l8 _8 ^
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.
    4 D5 D1 E) e( ]' a5 J
  156. 156 4 {1 h% j  r8 U+ V8 i
  157. 157         The HSE has priority over the GPIO function.
复制代码

# k# H- ]* g: ^

HAL库的使用方法跟之前F1,F4系列的标准库差不多,只是HAL库封装的稍显臃肿。事情都是两面的,代码臃肿了,易用性会好些。


% ]# c  }+ ~- }

1.6   CMSIS软件包介绍

CMSIS(微控制器软件接口标准,Cortex Microcontroller Software Interface Standard)是ARM官方设计的驱动包,框图如下:

ARM推出CMSIS软件包意在统一各大芯片厂商的外设驱动,DSP数字信号处理,下载器和各个主流RTOS的API统一。几年下来,各个厂商一直是各自为战,所以CMSIS的驱动一直没有被各个芯片厂商采用。而且ARM做得也不够完善,没有ADC、DAC、定时器之类的外设驱动。

这两年情况好了不少,特别是ARM为ST做的CMSIS-Driver明显完善了很多。针对我们这个教程来说,当前还用不到这些东西,主要用到CMSIS软件包里面的如下头文件即可(不同版本,截图中的文件可能不同,这个软件包是一直在更新中的,下面的截图的版本是V5.3.0):

/ m9 @1 h) j9 [

这个软件包可以在三个地方获取:

1、STM32CubeH7软件包里面。

每个版本的Cube软件包都会携带CMSIS文件夹。

2、MDK安装目录(下面是5.3.0版本的路径)。

大家安装了新版MDK后,CMSIS软件包会存在于路径:ARM\PACK\ARM\CMSIS\5.3.0\CMSIS。

3、GitHub。

通过GitHub获取也比较方便

当然,也可以在ARM官网下载,只是这两年ARM官网升级得非常频繁,通过检索功能找资料非常麻烦。所以不推荐大家到ARM官网下载资料了。

下面为大家简单介绍下CMSIS软件包里面这几个文件夹:

% h  b, m; ?, d

Core

Cortex-M处理器内核和外设的API。 它为Cortex-M0,Cortex-M0 +,Cortex-M3,Cortex-M4,Cortex-M7,Cortex-M23,Cortex-M33,SC000和SC300提供了标准化接口。 还包括用于Cortex-M4,Cortex-M7和Cortex-M33 的SIMD指令。当前这个文件下只有一个示例文件,还用不上。

) j+ G5 {6 p2 A1 m0 n

Core_A

同上,只是用于Cortex-A5/A7/A9。


  R6 s+ X, k; {# M

DAP

这个是ARM官方推出的下载器固件,也就是大家所说的CMSIS-DAP下载器。


  ^) Y2 ^. ]+ O* B7 o% Z

Documentation

这个是CMSIS软件包的Help文档,打开后效果如下:


8 T/ \- Y! `  Z+ A# w9 v/ {

Driver

这个是ARM做好的驱动框架,支持的外设如下:

针对不同厂商,ARM会出一个完整的驱动包,比如STM32H7系列,在MDK安装目录的此路径下(前提是大家安装了STM32H7软件包):ARM\PACK\Keil\STM32H7xx_DFP\2.1.0\CMSIS\Driver。

ARM做的这个驱动跟HAL库有什么区别呢?ARM做的这个库要调用到HAL的一些API,然后封装了一些比较好用的API,方便用户调用。


2 f: t& s& p& T+ C# |/ w# G* L0 N! V" r

DSP_Lib

这个是ARM提供的DSP库,此库支持以CM0、CM3、CM4以及CM7为内核的所有MCU,含源码。

, b  F3 Y0 o' s! ^

Include

这个文件比较重要,虽然是头文件,但是封装了很多内核方面的API,是大家工程里面务必包含的路径。


5 n! ]3 C; c: {/ Z! H0 G) M' @* G

Lib

这个文件是GCC和MDK格式的DSP库文件。


5 S9 G3 ^& O' y  a  Q0 w' i: W

NN

这个是ARM新出的神经网络库,框图如下:


- p" K7 K9 B9 D* e1 G1 B

Packs

这个文件没什么用,大家不用管。


8 F8 s) `# w8 ]2 D% V+ m

RTOS

这个是RTX4以及CMIS-RTOS V1封装层,含源码,免费,Apache-2.0授权。

' t& ~1 I# q: R# u

RTOS2

这个是RTX5以及CMIS-RTOS V2封装层,含源码,免费,Apache-2.0授权。

  m6 H1 J1 C  \1 ?5 z2 F

SVD

SVD的全称是System View Description,系统视图描述。对芯片的外设、存储器等进行了详细描述,编译器要用到这个文件,不同系列芯片有不同的SVD文件。以STM32H7为例,在MDK的option选项里面可以看到以svd为后缀的文件被调用。


* g. v1 Q: D, v7 {9 A

Utilities

这个文件里面提供了一些实用的小软件或者文件。

9 A* R8 [5 v0 A2 z- [; J

关于CMSIS软件包就为大家介绍这么多,后面用到哪个文件时,再为大家详细介绍。


& X7 S2 b) O, Y* v

1.7   STM32CubeMX开发平台

STM32CubeMX是ST在2014年推出的图形开发软件,方便用户配置时钟、外设、引脚以及RTOS和各种中间件。整体框图如下:

通过这个图形软件,可以让大家方便地生成工程代码,支持MDK,IAR,TrueSTUDIO等编译器。针对STM32CubeMX的使用,后面会专门做几期专题教程。

7 }2 y: Y0 j3 R. h# u# c' `& V3 \

1.8   STM32H7调试方法

STM32H7的调试方法主要分为两大类:

1、MDK和IAR编译器自带的调试

    MDK调试方法在第5章进行了详细讲解。

    IAR调试方法在第7章进行了详细讲解。

2、终极调试组件Event Recoder的使用方法。

    在8章节进行了详细讲解。


8 d/ s% V* @" E- \+ x- |2 ]8 [

1.9   STM32H7出现硬件异常的解决办法

大家做项目时,经常会遇到硬件异常问题,所以专门为此做了一个章节(具体在11章节进行了详细讲解)。

# w- {/ R% p& \9 R' J. b) g

1.10 总结

本章节就为大家讲解这么多,建议初学者花些时间对 STM32H7的开发文档的章节结构了解一下,随着以后的学习最好可以达到熟练查看这些开发文档的程度。

# R# m- N; _' D( t0 g7 r
6 \: w# _' D* g- y8 o: A
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版