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

【经验分享】初学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),教程的后面章节会为大家做讲解。


6 Q& [! `9 S( w& M& o; e$ K1.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。


" Y6 M) t* a, s

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内核,从编程的角度来说,几乎没有区别。5 y5 d3 t% b0 s; D& q8 H* U8 T

! Q$ @. U( a9 o/ @; t

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


, \+ v0 L) L# x/ d; h! N" Q

1.4   STM32H7开发资源查找

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

( l. A: W# k# W

1.4.1      开发文档

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


- v4 P& p" I3 @) m1 X* [

参考手册(Reference Manual)

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


, {0 q3 V& I( x" F- R2 A  \

数据手册(Data Sheet)

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

& }6 I, D' b- k6 ]: y/ e

勘误手册(Errata Sheet)

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

" R6 t' o6 Y& a8 y- N  w6 u

闪存编程手册(Flash Programming Manual)

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

  K/ K2 X- H3 z7 b+ W

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

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

- u' y2 V: i2 I! A5 a* K

应用笔记(Application Note)

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


+ o; `1 }$ Z  n0 T+ a) O- |

用户手册(User Manual)

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

6 @) p& ~2 a+ _( I/ g0 |

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选项即可。进入后,所有的相关资源就都在这个页面下了。

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


& l/ q/ [* G: P. b" _* C8 O% W! B; X

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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


" E. F5 X' W' i% Y6 ^$ A

1.5   HAL库介绍

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

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

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


. I2 ^$ a8 U& Z! s6 U

  1. 1=====================================================================: Q) A* m7 T8 j) c7 J& a
  2.   2   A9 |7 h/ f7 a, Z1 G$ U
  3.   3                     ##### GPIO Peripheral features #####
    5 ~8 W$ C  h0 ?7 ?* \; Z, S
  4.   4
    " ^3 U1 b3 E1 C/ o6 x  @2 m: F
  5.   5======================================================================
    : @# X4 w6 g  R
  6.   6 + k9 b+ \( T; o" s0 E( y6 y
  7.   7   [..]  e" J$ A7 m: J: y! y
  8.   8
    ; O5 C6 ]! B4 f' n4 G1 W
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each
    , C$ L2 ~% U; E% E" b8 [
  10. 10 ! D6 y- x9 |8 Z: \& G3 p/ W$ L- r) ?
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software
    " B6 i, H& J4 ?% E- m( x
  12. 12 / ]$ G  _' g1 l) h) h9 H' n9 v# Q
  13. 13   in several modes:2 W7 Z5 J5 W2 s$ K3 d* M; A9 y
  14. 14
    1 m& x* v, H. K7 B+ y
  15. 15   (+) Input mode% N1 _& @. I. o3 T) K' n; B3 d
  16. 16 & {0 z6 {- ]+ P. z3 ~3 P0 W
  17. 17   (+) Analog mode
    ' r, _- G* g5 h+ m8 O  J
  18. 18 - S: p4 a1 o4 v& G/ i
  19. 19   (+) Output mode
    / T' f3 G9 F( e: e& j+ k% s
  20. 20 ( r) i0 J2 e3 q- m
  21. 21   (+) Alternate function mode
    - Y" r, O0 X0 v
  22. 22
    + n/ e6 R2 i) J; `
  23. 23   (+) External interrupt/event lines
    3 _7 I& B, Z8 R) b. f4 m1 B$ c
  24. 24 ; m. P9 Z1 n  ~" _3 `8 }
  25. 25  
    4 F9 [: n1 H, `. s$ f
  26. 26 : o* \2 K1 w1 n( n5 @& p2 v/ K
  27. 27   [..] : C. K# k: ?" r- g# ]$ R+ u: \
  28. 28 4 H+ `8 t$ F2 _1 r/ h
  29. 29   During and just after reset, the alternate functions and external interrupt
    2 \+ [# W# V2 T0 ?" C
  30. 30
    $ @0 K, C& j$ R( W' L# p8 x9 u
  31. 31         lines are not active and the I/O ports are configured in input floating mode.7 H! `, T8 \) T% {+ W
  32. 32 , F7 X- G: h" u" u& Q. F' l: \! O/ _& H
  33. 33     
    9 I2 x( d: p/ }
  34. 34
    . W/ ^9 F* j8 r$ J/ v/ B7 v
  35. 35   [..]   
    9 Z* L7 v& v! x9 z& Y+ x
  36. 36
    ' b* B: a  x4 u2 d, Y& w
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be3 f( K% V& P- K; e
  38. 38 4 }5 Z* _7 G" t8 |* S2 o8 s8 J
  39. 39         activated or not.
    ! R! K: M( s$ s- n+ G
  40. 40
    4 ?" Q% P7 c6 o0 Y: m
  41. 41  " ^  O+ z7 K4 H+ N' g8 y" n
  42. 42 7 [7 {- t4 k, o0 X
  43. 43   [..]
    1 l4 T4 F0 `* R6 s% K2 ~7 b
  44. 44
    ' a8 C. l: E( C
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    # Q0 N1 H# Y) v9 b; ]! D
  46. 46 5 _' l! \/ s9 |$ c5 R  a
  47. 47         type and the IO speed can be selected depending on the VDD value.; ]: h3 F3 J3 k2 H4 w! l
  48. 48 4 ]( ~2 ^' g5 W3 {% [" l
  49. 49  9 U% @8 c* T7 X& R1 K0 j
  50. 50
    # S8 d7 B/ a0 C+ t+ L' s3 w- [
  51. 51   [..] ! O1 N  \$ u/ r/ s4 G  o, S- }) j
  52. 52
    1 N4 C* b8 l; X4 r
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    4 Y' S, Y' g  K+ Q" F+ e8 ]" f. e
  54. 54 1 N% r1 k' k1 x, _
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are/ E( x  r5 H& p) ~( Y
  56. 56
      i, r- k% P' w' x* J9 m, ~
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.
    , W/ ]+ @9 M8 @( e/ F4 G6 w) E
  58. 58
    7 j, {! ~, h+ q: \8 r  T
  59. 59  
    # S+ C5 A: q# ]: m/ T1 O* m( w
  60. 60 8 a/ C: F& w4 w' A. j7 `
  61. 61   [..]0 U" N3 _" {$ c
  62. 62
    * i7 s4 L' g  X$ Q# D6 I
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors( b4 N7 ~2 p9 _7 J5 d! N$ m
  64. 64 4 \/ q# h/ z4 z3 K& u+ E; a
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each/ a$ A, l+ R+ R$ g
  66. 66
    / u8 Y" q* w; P+ b, R
  67. 67         input line can be independently configured to select the type (interrupt or event); ~9 n! j) {. Y; w
  68. 68
    & x, b9 i' w5 Z
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can" P& x' R$ a$ f
  70. 70 / a3 l/ r' w7 C5 O: U- Q8 F' {
  71. 71         also be masked independently., Y) d! q, O. Z' t; M' d
  72. 72
    % k/ H8 {0 c# B+ L9 b
  73. 73  
    & o; V! B0 H2 B" Z" u0 ?. Z( h. y
  74. 74 ; [/ H7 u4 _% k" e0 ]4 D
  75. 75                      ##### How to use this driver #####; E+ K" H) C5 X* }& f5 f- D
  76. 76
    / b4 x4 V( @) [- L/ Z+ V" _
  77. 77   ==============================================================================
    ! u* r# F/ M) }  v# [: i1 X6 R
  78. 78 6 y  W, W6 d: ]8 r0 ?3 N3 z9 b
  79. 79   [..]6 D* v0 Z2 {2 w( N9 U4 b, z$ t4 D
  80. 80 ; h# V8 b' x+ _5 T. U# _/ F% b' q
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().) t2 v. k  Y+ t. O$ g$ I2 a
  82. 82 % M  u2 O1 ~3 ]5 E; |" J* r
  83. 83  
    - C6 c6 D  Q1 [! i: z: V0 q! i  F
  84. 84
    : u% O) k6 a2 U, M" k
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().
    1 m' C. h& o) W! }0 w+ v
  86. 86 , D( }! ~0 F( z
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    ( a8 m, d0 _) G& {
  88. 88 $ i- _# V$ [, |% i5 W' y
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef
    % {7 }9 u" P% Y" ~, e4 s
  90. 90
      x; {; a( F; m. {' z5 U% R: x. P3 r
  91. 91              structure.0 k+ z, T# a9 b  V: ^% _( l$ s
  92. 92
    & K0 m& p# h- K* ^9 |; {
  93. 93         (++) In case of Output or alternate function mode selection: the speed is1 `9 w: ^4 Z/ Q- d" C' R+ a
  94. 94
    * X* R; \4 Z# H8 E7 c
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.; S3 ]7 _- A. n/ y
  96. 96
    + d; E/ C- C) b* d, P1 K) z4 |7 {
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO: K7 {+ R# w6 v' f
  98. 98
    3 k" M' r0 r  ~: i, g
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.* \, |5 r4 F$ u: V2 w9 N" A
  100. 100
    - c' m5 ]7 [; t' ^; K/ }
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel
    5 {' j+ j) w; V3 c' D
  102. 102 & \6 a. [5 i6 j6 u& T, O
  103. 103              or DAC output.
    * T; p. r5 f) T8 X: N6 T
  104. 104 7 o- b# Q) N* Q; K% h
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from
    6 [* c2 R. ]0 e% C! l& @( f# j
  106. 106
    . |/ b; N" J7 ?  L5 G4 D% g
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and8 |' n% d  H' @7 m
  108. 108 ) j* y7 O$ S4 v+ g* u; k
  109. 109              the corresponding trigger event (rising or falling or both).
    ; C6 \. \+ S! ?6 a
  110. 110
      `- D4 q, V7 p$ a" ]' m
  111. 111  
    * v0 P( M  T& z) {1 r
  112. 112
    $ z% {. Z+ k8 `! [+ e
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority
    ( D/ T! k4 i, W6 q& ]
  114. 114
    8 t* K/ Y) ^5 q+ m: k3 o
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using6 C( ~2 F6 A) l+ p) `. C
  116. 116 ' B# Y$ K  e& G6 {/ N6 t
  117. 117         HAL_NVIC_EnableIRQ().* K' x# b8 {: l7 h+ j! {
  118. 118
    3 m4 |5 \5 E$ Y2 y' N! o
  119. 119         
    - h8 ?2 h( A7 [' g% f! ]* Y
  120. 120
    1 Z4 u0 I: g9 g  K2 ]
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().1 k  O* x; E1 L* t+ Q. w8 e
  122. 122
    - ^6 L5 M- D$ t' s* @! v5 X7 H
  123. 123            
    " B; d: W- H! r: F
  124. 124
    # o) F+ m6 f) p+ q  Y; ]/ M, _& J
  125. 125     (#) To set/reset the level of a pin configured in output mode use0 o( F& m0 L+ D' ]) Z
  126. 126
    0 Y- B& t! ~: g7 J& k; e- h* L
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin()." I4 y: U! M, Y
  128. 128
    6 E  d4 W) W6 l- s$ `! C/ U% q
  129. 129                 5 q0 P0 c1 @# F- A+ \9 i9 i
  130. 130
    : H9 c# W5 d: R  m! V. o
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().
    9 Q" w: w0 L% s3 N4 {
  132. 132 . _& O9 J  f9 r3 g* k- [
  133. 133  ) A. z1 J8 g! E
  134. 134
    # Z$ u1 p0 p3 ~7 l$ r9 e7 y
  135. 135                 
    1 a4 w; ~* m6 r0 `$ b4 m
  136. 136
    ! [, w/ f1 X9 Y0 m* I( \* ], f- t
  137. 137     (#) During and just after reset, the alternate functions are not
    6 t4 v. I; |$ A  V
  138. 138
    , u# j4 H& d' k- d& ^* X9 B
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG; l0 K1 d6 D4 V% A6 \' {6 v3 e
  140. 140
    : S/ d9 y9 L. x
  141. 141         pins).
    ! ]* Y6 D  D, u& L0 Y  q# B
  142. 142
    1 S1 x2 I9 h6 m8 L
  143. 143  
    8 L7 b9 Z! j" K5 ^9 x1 C
  144. 144 3 g8 J4 ?. @7 S: r+ z& c
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose" R, y4 H4 a% t" x; g
  146. 146 1 c! P$ A* {- ]: \7 g
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has4 d9 A) q6 H4 {& a+ M9 M
  148. 148 . C9 B* T* F1 S% F
  149. 149         priority over the GPIO function.
    . L$ s  ^1 q8 z* s* r
  150. 150
    2 V: }( g& @% L) \
  151. 151  ! N* u' s( ?" {6 E- w( S
  152. 152 - w5 @( n: I7 G3 B1 _3 a3 H
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as$ R& b' `! y! D: L( O8 d
  154. 154 0 ^, d; `9 F+ K. E
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.
    ' N/ q3 |: v" v2 A# p" N1 H( l1 Y6 K
  156. 156
    ' O- q. R$ z; S) K
  157. 157         The HSE has priority over the GPIO function.
复制代码

3 N8 ?( Y- R5 a' k/ r+ A& V2 Z3 @

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

0 A* J3 E- k5 v$ Z( s

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):


, q5 A. O9 ]9 l, X

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

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软件包里面这几个文件夹:

1 B, A  T/ l) @* z. _

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指令。当前这个文件下只有一个示例文件,还用不上。

6 l- v/ f3 }( S& s8 R1 l5 l

Core_A

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


) D- L& z+ V% h- R( d3 l6 K# n. q

DAP

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


6 b1 u  A; h8 x: ?8 f$ g7 }

Documentation

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

0 s9 W1 ^2 C$ n1 K* \% j

Driver

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

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

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


) h! J. H  V. a

DSP_Lib

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

. s5 q- ?$ {, O

Include

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


6 S. k% L$ ^4 ?% k, O/ t

Lib

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

9 z; K3 J- {) _

NN

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


; U5 ?4 _3 \2 g0 E, w8 j, O6 v' R$ \

Packs

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


0 _8 n5 B3 Y8 c! b3 T2 \; Y

RTOS

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


3 T3 A. ?4 Q/ p2 ]9 n) |

RTOS2

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

7 [1 e0 e+ q& [- N- ]& v

SVD

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


) g- b3 i3 ~& T0 p" q# ^  E& t% D

Utilities

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


& m+ N4 b8 I6 I6 B; H

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


: T5 f) w+ M: |

1.7   STM32CubeMX开发平台

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

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


* A1 z: }% ~+ T, f

1.8   STM32H7调试方法

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

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

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

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

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

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

% z' A. M& G) T# X0 I8 N. d

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

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


& R8 t! e- G' y* [

1.10 总结

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

) r1 m+ [: z1 @+ H! J

- S: H" m- y: g5 U& Y' i
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

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