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

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

. v- D5 I. Q) s9 ~
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。


6 o7 y# n. K$ A

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内核,从编程的角度来说,几乎没有区别。
; X1 Q. _* D2 ^; Y6 g/ S2 G$ c! ~! h/ U

+ j6 O& ?6 U1 m- h* G& v" e3 D

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

: ^% {1 }. F; H4 N& [. f2 X

1.4   STM32H7开发资源查找

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


( ^6 u" Q, _5 [7 L9 B8 R# i4 A1 q+ h

1.4.1      开发文档

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


' z- [2 b3 H" B

参考手册(Reference Manual)

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


) ]" L, K# W. \4 G* a& U

数据手册(Data Sheet)

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

; m4 [. y3 r- \% _3 H9 ]

勘误手册(Errata Sheet)

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

) K1 g' O  ?2 V4 K' z

闪存编程手册(Flash Programming Manual)

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

) ]3 E# `- V( A

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

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

+ O1 X, R/ i' h; a6 F9 h( I. S

应用笔记(Application Note)

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


0 P1 w% t# z, x

用户手册(User Manual)

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

: f! Q. Y. t. s4 c, N

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

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

7 J9 c6 j! X% g) t/ d6 W9 y8 [2 H

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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

1 c: L+ m( F( T8 @, G6 y% u4 x  o

1.5   HAL库介绍

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

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

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

9 D; G' E" K, m, g

  1. 1=====================================================================
    % C$ j9 Z' {1 F% A+ C' l
  2.   2 + }- b. A. z5 W1 Z2 B
  3.   3                     ##### GPIO Peripheral features #####
    5 p* F; e2 W) m4 z
  4.   4
      e1 w+ ~; _8 e4 U( b- @2 g
  5.   5======================================================================  C) R% |2 W$ v4 E: c+ T. _
  6.   6
    & b5 y) j+ A9 M
  7.   7   [..]9 b1 {" N, n5 X9 |5 x. h" y
  8.   8
    . {% H4 U8 J* i* o
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each
    8 }- Y! @6 L8 h# e' l. n. N
  10. 10
    ; V) C' G+ i7 E  w8 ?, }
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software* D. c' Y4 e) F' _' C
  12. 12
    4 A9 u  _9 ~* m1 z& o0 w0 g/ ]
  13. 13   in several modes:
    + N; S. Z! O+ N3 C7 [. H5 B
  14. 14
    8 \) d; O8 o7 s# h
  15. 15   (+) Input mode
    4 K% X' M# ~! h2 m
  16. 16
    " {- N0 F  W6 Z& n2 E3 n9 j; k
  17. 17   (+) Analog mode
    0 J, P4 l' t" l  I' o) M
  18. 18
    : ]  z" R( W) I1 m7 P
  19. 19   (+) Output mode9 e; [/ ^9 y6 }6 O3 P" ]  C
  20. 20 / u7 k/ q: J/ r8 Q# K- b/ }
  21. 21   (+) Alternate function mode
    ' v! t( ]) y& X1 W+ Q! q7 S
  22. 22
    ! i1 D5 `2 P8 H, h: f3 t8 M6 H. k
  23. 23   (+) External interrupt/event lines
    - b/ l" F1 B& n% {+ T
  24. 24
    2 t" N" `5 b) X; n, Y9 }0 u
  25. 25  
    5 }* g& Z4 D- N0 b( a) P
  26. 26 4 S6 W% U! Y6 W, m5 t
  27. 27   [..]
    ; D9 B% |: U/ S9 f3 y9 `. }
  28. 28 # ~, E9 G1 j2 [, v% \& W* {5 G
  29. 29   During and just after reset, the alternate functions and external interrupt
    0 O: b, ^8 Z, B$ J
  30. 30
    - \; n# ~# }; N( S7 t: \
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    9 e$ ^4 g3 u/ W- Q+ T# G8 i
  32. 32 - p$ g3 }3 _/ ~0 g' b8 s! S! j1 V& S2 \
  33. 33     9 |% Z% Z9 N9 P& Z
  34. 34 % b% S4 Z# n0 Q1 }" H
  35. 35   [..]   ; S8 @, e* t; C- W8 t+ B
  36. 36 2 ]6 l! B* C6 Q: s  h5 [
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be& A- F5 m  h# r# P9 ], B) u  v
  38. 38
    ; `1 z; [1 T# \' Z% W
  39. 39         activated or not.6 Y/ `& U! Z& i- `$ _8 R6 I
  40. 40
    - t2 L( O, U) I+ G2 p
  41. 41  ' h& h  Y% F% F/ {' v0 b3 T
  42. 42 , V* f/ J9 H1 a% Q1 A
  43. 43   [..]4 c6 s- v7 C9 a
  44. 44 8 P0 d9 z* |, e  I* A/ k4 W
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    ; [/ r, v) j3 U" i, p
  46. 46
    $ w, E. n$ q; b: R- ?
  47. 47         type and the IO speed can be selected depending on the VDD value.
    4 {/ [) F# p2 T% c/ V& J
  48. 48
    1 ?; r4 H, C' y, A" f
  49. 49  , N, D2 N3 L0 m4 _% L3 s* V1 S: h8 ?1 S
  50. 50 $ a  f' u  Y: g
  51. 51   [..] ' X0 ?5 k7 j8 s% i
  52. 52 # C# E' o/ Z, i7 r1 S- S
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    6 c% V+ t# R. b# H2 y* ]- ]' A% H1 B
  54. 54 . m) Y, W& s, {; T# |* h* q6 K8 `5 a
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are
    6 f  j8 w' R- I  U  H( I- {9 f
  56. 56 & V% B6 q/ b4 t% t
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.; T( `7 S! g6 g& |; ~8 K3 n
  58. 58
    ! g3 a4 Z9 ^4 ?! ]( v
  59. 59  
    , y, P2 M. j! O, F5 @
  60. 60
    * x$ p6 ?) Z) f4 O
  61. 61   [..]
    " N; o1 i& s, y+ v: @
  62. 62
    / g. H. G% \9 k. r
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors* |; g# S% p% V' `% p
  64. 64 & O: |6 E5 {9 U: b& v
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    2 l, D0 H: E9 }9 G: |% Z6 v4 ~
  66. 66 : Q* j5 Q) S! m7 Q$ |. I& T4 [- b4 O" H  v
  67. 67         input line can be independently configured to select the type (interrupt or event)1 [# _" A3 @/ P0 u9 U
  68. 68 9 T# c- Z2 T3 f3 ?. n
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can" ?  R+ H6 R, z4 _9 B6 H& i  J/ S3 c
  70. 70 ' c! @. {7 T# P  z+ [
  71. 71         also be masked independently.
    6 z0 U! h4 }0 k# A6 V) x
  72. 72
    & e8 w& I% j* M. ]& ~# c: Z' y
  73. 73  7 K9 b* a: H. Y( R' i
  74. 74 ( X' F9 J( z: j! I" t
  75. 75                      ##### How to use this driver #####
    9 h( t8 c% t( \
  76. 76
    . l2 e- D# c" U1 m4 J; j
  77. 77   ============================================================================== + \: ^2 A$ b9 t* K8 d' v
  78. 78
    7 s* I$ v5 h9 H9 v. \5 Y
  79. 79   [..]3 C  \6 P+ j/ [5 d: ]- w0 ^
  80. 80 9 o2 m3 T% A' w% \- E
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().
    4 V6 L% @+ a# ~3 j
  82. 82 ) c- _3 Q3 T, L
  83. 83  9 Q! J, c( W+ X
  84. 84
    % i! x) `& r+ E& B1 o9 f3 R2 J
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().
    % v" V8 e* r1 q& s8 _
  86. 86
    2 B+ m" g& q3 r/ u" T2 P; w5 \
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    ' O" f& L# J; J: y
  88. 88
    % ?3 h2 w" G. r1 B  k( n
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef9 M  c+ z+ c# d+ w3 V6 i% \1 _
  90. 90 1 p) b, y# M, W* |+ W
  91. 91              structure.+ h+ b0 \' ^8 `# ^1 w" G' q
  92. 92 7 t) m) R- m, F6 h5 V- v# B0 _
  93. 93         (++) In case of Output or alternate function mode selection: the speed is
    4 u, F6 i& G. j, O
  94. 94 " D- n& B. B6 `
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.
    1 A3 n9 m! e8 h
  96. 96   ?' a+ c7 v$ n+ [
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO
    9 m) h( L) T2 t: n3 ]) Y4 p6 D
  98. 98
    & a( \4 I" i0 |2 E! z, \
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.7 c9 f3 C) j/ ]3 N! G8 j
  100. 100
    2 O) _9 ~+ Z3 `$ J
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel3 o3 Q$ B  s8 x$ n# R
  102. 102 $ K* W5 f) f. v) E% q9 f
  103. 103              or DAC output.
    " b3 n7 e+ P  l7 c
  104. 104
    : {5 m: ]& Y! i4 T7 X5 I9 P! n
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from' o% L- e, G0 D% P7 E- i
  106. 106 , R! P7 P) }+ @
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and4 J. e5 B/ u! h
  108. 108
    0 I- z+ S, Q+ T1 k# G9 n
  109. 109              the corresponding trigger event (rising or falling or both).# @2 N0 x3 D* F( p" l
  110. 110
    : z0 q, Q% B8 k7 w3 j$ S1 K
  111. 111  
      d2 J5 M) [3 @9 l
  112. 112 & x' ^( T1 n5 O$ k$ w0 D5 \3 m* x
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority7 H# D+ E9 ~" l4 Q$ k; z/ `
  114. 114
    ; M6 g4 @# B% p# H2 R
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using' s, \9 Q9 @3 T
  116. 116 6 Q$ F3 B! N" H( ]" @
  117. 117         HAL_NVIC_EnableIRQ().
    & O- {& l) h; `( @! f5 w
  118. 118 4 I* G/ c6 G6 ?  C& f* }+ `* ^, h
  119. 119         
    9 I* ]/ v' w- e. {
  120. 120 + k! D2 F% t7 j" q
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().% t  E3 T. I' S
  122. 122 3 F* C' n1 Y4 d5 R6 t9 m
  123. 123            3 w* b/ @" H8 ?  \# [( t
  124. 124 - }! [' B5 R0 ^* [- Q
  125. 125     (#) To set/reset the level of a pin configured in output mode use  D- t; R/ y1 _/ V# [* G( i9 ?
  126. 126 3 J# G" G% A; |
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().  F0 X- c. O4 o  U
  128. 128 ! K2 j+ E9 u: P- r- i- f  H
  129. 129                 
    ( I4 S3 B2 U$ I% X/ j9 p$ K
  130. 130
    & p. v, P# i$ u3 Y3 \8 E
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().
    % @) N+ V/ q$ b5 E8 ^) S+ Z" S( [
  132. 132 : W* H, i! H) O& d8 v8 W
  133. 133  ; g' Z1 {8 a# c" w; e3 D
  134. 134
    " l, g+ z6 G/ r  w  L& y# K, _8 A, r7 e
  135. 135                 $ F! r) o3 s% X6 b
  136. 136
    + j* G8 b( O5 ?5 ^
  137. 137     (#) During and just after reset, the alternate functions are not' [! B" I. x( c" n* {
  138. 138
    * @0 w( U# R! U% Y0 O, M0 B
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG! I* o8 t' U! j" s9 R
  140. 140 1 o$ O& r7 |" ~+ N7 e5 W
  141. 141         pins).7 q5 D8 s, n) K; Z: u: ^
  142. 142 1 Z1 J& }3 q0 X. {* |1 \
  143. 143  
    ' F- s- x8 @4 u4 f. |; O% V
  144. 144
    , x3 ^4 S; j- C" q
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    # i/ q9 m9 v/ T: A6 N# }
  146. 146
    2 P; \/ z4 e" N, M
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    % b9 P  A1 ^4 [: Y, }
  148. 148 ( {5 O" x$ f" A
  149. 149         priority over the GPIO function.- q6 Q' @( d- m' D' P* u
  150. 150 7 F. `% k( Y  H3 R( g
  151. 151  2 ~8 k" J6 t" t6 x
  152. 152 7 j' ~0 u1 `5 x4 D- a
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as; f* g5 t% ^/ |
  154. 154 . b2 U& s) u9 L9 k
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.
    9 `! P* }, S6 P. E! \. d
  156. 156 : v: K  z9 W0 t. y
  157. 157         The HSE has priority over the GPIO function.
复制代码
1 ?: R$ i! ?+ ~4 x

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

9 h( e- [! C4 Y5 u+ I

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

3 l* [: j* ^% ]7 T8 K9 l0 ~0 O

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

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


. m- ~2 N& k5 A* 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指令。当前这个文件下只有一个示例文件,还用不上。

7 w9 Y9 H3 a7 X. U' L

Core_A

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

/ ]/ U$ O  n& g$ y( g8 j

DAP

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


+ k. M, F5 t' e$ y

Documentation

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

6 l6 f& k2 x$ w9 ~; b# U3 U9 D: p( v

Driver

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

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

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


( {4 d1 K1 i6 u4 [* o! N: t

DSP_Lib

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


4 u! v4 J" f  b' u5 A* ^

Include

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


9 a5 B  r: S4 r" ~; f' W/ s

Lib

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


* f$ q& A; F! v9 `- H; Q* u

NN

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

* n" [$ z- d8 W2 V4 u2 t

Packs

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


5 L: t, c! s3 z0 E3 p

RTOS

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

6 }# `5 |0 U( P% f

RTOS2

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

) @, ]' f! E. F- S% ~

SVD

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


/ a, l0 w$ ~( p# N. x

Utilities

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

5 L! c/ E1 M5 N/ }

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

- u, D, T$ Y8 q" p/ S

1.7   STM32CubeMX开发平台

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

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

( B! Q& u8 L- Z* J

1.8   STM32H7调试方法

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

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

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

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

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

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


; Y' q- ~0 D1 W; ?0 P

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

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


- {+ l  B8 {) F. D% `* E; M

1.10 总结

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


# v  [8 L' {3 u+ ^* y& J; }4 Y3 \; M4 m# ?6 j; N; Z" e
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

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