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

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


0 @! Y, l0 y. K( n1 H  n0 s1.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 e8 s6 t& J' G7 |4 f. o2 q# k- s2 u

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内核,从编程的角度来说,几乎没有区别。
- Q* O. T6 a1 i+ _

. ~- {8 C5 y4 u* Y

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

1 K0 I- Y. G+ M  T2 g

1.4   STM32H7开发资源查找

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

, c' Y' r5 b1 u9 g3 J7 d: m" j

1.4.1      开发文档

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


5 T, n! l4 e5 I3 j& D

参考手册(Reference Manual)

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


6 m- ?" x# F2 r

数据手册(Data Sheet)

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


/ C$ c4 Q, v$ ]# I; M+ p

勘误手册(Errata Sheet)

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


9 h% h) \, D! @1 M1 e7 w) j

闪存编程手册(Flash Programming Manual)

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


  _( }, y! c6 t8 u3 T

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

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


9 |& N# L6 A, g8 |: ~& ?5 t/ h) {

应用笔记(Application Note)

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

+ R/ P5 Z, Y" W3 J7 e

用户手册(User Manual)

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

9 l" x" Y& `$ D

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

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

$ ~  h+ ]* l1 }  q! [9 O8 w! Y. b; 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的软件包。软件包的目录结构如下:

7 l$ b" `! X7 _, ]# a

1.5   HAL库介绍

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

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

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

/ \1 ~8 v/ {' g3 a6 O5 s

  1. 1=====================================================================% b/ R0 m  h/ j) {) u
  2.   2 6 O/ |. G1 |1 A( B; W  e  o
  3.   3                     ##### GPIO Peripheral features #####- T* K6 I; d8 r) D- L2 }" R
  4.   4 . m; a; U4 H( D4 u' ^
  5.   5======================================================================- x% H5 v; q7 y
  6.   6 1 E( |: A; |& J$ h: W" Z
  7.   7   [..]$ B4 W+ X+ Q+ o1 @
  8.   8
    ( I% C; |; P6 s5 b) ?: V& Y
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each, P8 \$ ]" v! C  C. x
  10. 10
      ~2 o+ e( Q1 f' y' o
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software3 v* d# u( ~  f4 C  c' m
  12. 12
    ' S0 Y& U# s, L% F2 i' p7 s
  13. 13   in several modes:# d$ g: {* f8 Q; F) D1 D
  14. 14 ; _6 i* V9 i8 J" [/ y& F& ~1 D1 ^
  15. 15   (+) Input mode
    2 p  V, B5 q6 n: h( M
  16. 16 & s2 {- e2 ]* u4 H8 {1 a9 D: ?
  17. 17   (+) Analog mode
    2 g) d1 f. @9 G$ X" j' t
  18. 18 ) t+ b- L7 i# d+ H$ b2 }( a
  19. 19   (+) Output mode
    5 X2 @9 y* B. z
  20. 20 + F& g* X( ]/ t. o
  21. 21   (+) Alternate function mode4 q2 p0 T5 g% P% m9 S; K' g+ K
  22. 22 7 d8 _1 S" x# N5 Z: y/ K, t7 y  a
  23. 23   (+) External interrupt/event lines( a% u5 u' g& c8 S% E
  24. 24
    ; J+ j0 m# \0 y; @
  25. 25  
    ; U# _4 [4 ]1 g2 P
  26. 26 ( q" ^7 b, f# t+ r6 E
  27. 27   [..]
    - F; e) n) d$ |9 N$ j3 Z& L
  28. 28
    % \- c* U' @# A  V  t/ v4 [
  29. 29   During and just after reset, the alternate functions and external interrupt
    / P! P: r% [2 I! v
  30. 30 ! F9 ^; I2 X* H) `+ y
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    * J" c1 F3 v6 }4 r0 ~
  32. 32 8 C$ A$ d" W/ B, y$ x" x, N: }
  33. 33     
    9 J: @; c' g6 i) G
  34. 34 1 ]& N) s- m  @: P0 V, t6 v: c$ @
  35. 35   [..]   : X. p3 T9 R1 k3 P% s* {
  36. 36
    ( A+ g" r7 |& j1 B7 g/ g9 }' m; [# X
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be; |& A# f% f1 }# Q/ H
  38. 38 ' H8 T; Y1 ~2 z9 F2 x
  39. 39         activated or not.0 V2 b$ v3 K, K$ r5 x
  40. 40
    1 P" g+ }* [0 ~! r
  41. 41  
    ; a% U, O: \& V% H7 a/ ~* h
  42. 42
    ( g3 K7 ?5 o* U, a. z) E
  43. 43   [..]
    7 H& z- ^, Z& V# R7 d$ F( _! z  |% N
  44. 44 2 d: D( P9 v+ o& Y
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    ) c( k, x- ~5 j8 [5 \* Q
  46. 46
    " l; S6 G) `% j& p# @% {
  47. 47         type and the IO speed can be selected depending on the VDD value.; z* I. p. c! d% x( k% f
  48. 48
    8 X, X! b+ n! B
  49. 49  
    , j4 o1 H# i5 t' w
  50. 50
    * o% x1 r* e, |; X* {/ Q1 p( U
  51. 51   [..]
      s1 {# l- ]. n  k6 o
  52. 52 . b$ i1 B. x2 P8 k2 c/ l
  53. 53   All ports have external interrupt/event capability. To use external interrupt, `7 T8 S, I1 o, F* P
  54. 54
    7 J7 q$ ^& m3 @( D
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are  B4 F. x- P, g# l0 n+ d$ R% Z. ]
  56. 56 ( }4 @) a$ s& p
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.. h7 Y* ?9 I9 H; X9 f8 V
  58. 58 . s4 o5 \. S- S4 q
  59. 59  
    4 y+ B' o$ e$ `6 Q
  60. 60
    & ?  v; g" l* y# D1 j
  61. 61   [..]
    / f& j/ v4 _& t1 H
  62. 62
    + ?; ~: z7 j4 U! ~: m
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors" }5 b* \3 q. ?. L; C
  64. 64 9 z4 N/ Q8 G% G% `% d* _$ b2 ]& P
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    8 h  Q2 J8 U8 M4 N6 \9 a- C" h
  66. 66
    4 V' F$ m9 {9 M9 i7 n3 k
  67. 67         input line can be independently configured to select the type (interrupt or event)1 K4 `( {/ s7 i0 R& q
  68. 68 8 A0 a. L1 ]) \. p4 l. K) W
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can8 L- o9 W# l" }. m
  70. 70
    9 F7 I3 J' a8 A( V- G0 h$ L5 @1 A
  71. 71         also be masked independently.! I4 t$ J: Q6 A7 N- s
  72. 72 . W1 D5 `. ~. g& y# _! z' n6 F
  73. 73  ) {  H  _8 D' N  f3 @$ h6 S9 `
  74. 74 0 M2 p. G" e1 y! f9 {$ `% \1 u
  75. 75                      ##### How to use this driver #####1 k. f  Y6 M3 Z" K5 J9 g
  76. 76
    . B: ~, N7 b5 K# A: C! R
  77. 77   ==============================================================================
    8 y; i5 |! E1 q# c
  78. 78
    ) r  K5 j7 ]1 o& S8 V$ u
  79. 79   [..]4 I6 b5 @7 P% P  a/ y
  80. 80   a8 W  V3 i. s/ V  G0 l7 h
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().
    5 f& K% P. ?. E! {8 O; L
  82. 82 / m3 D% P! Y8 X! {8 m9 C% Q
  83. 83  
    . w1 l9 j2 g; v& |
  84. 84
    : v9 u% m" e( [( P
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().& d, C' j( p( C8 m0 o" M7 V2 y/ o' B
  86. 86
    4 v( G0 P% N, e( q7 a
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure, y$ r3 m8 |1 @+ i! j; Z
  88. 88
    4 _: S& ?  l* F' N/ h! w+ l
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef4 F' M6 x1 l3 {* `
  90. 90
    ; v% R. g3 @. q
  91. 91              structure.) t4 ~7 t1 P+ F$ q
  92. 92 0 X& v8 m. j, ]
  93. 93         (++) In case of Output or alternate function mode selection: the speed is
    ! D  T' c) a! d- j( v1 }! O
  94. 94
    + _$ X, S2 B+ q6 I
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.4 a  g7 }! g# S
  96. 96
    - v' O9 I: j2 j0 _$ I
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO
    ( n" X- `3 Y. h$ y! b. o: m6 X
  98. 98 " B/ Y  Q, ]; E+ y! n: w, V* F
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.9 ]$ L7 G/ I. g4 m* m+ [
  100. 100 $ i6 m& h8 K* y  W# _
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel9 L: w: p8 r* M3 Y% [
  102. 102 * c6 K) p" Y: \8 H) C
  103. 103              or DAC output.; o" i  ~& c6 s& R
  104. 104 / p  I1 e- b+ y' ~& c3 c) t! ?
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from
    ) I, f: W3 N+ F% {. b1 N( X5 n! B( ^
  106. 106
    ' Y7 K' i# P' Q8 _
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and
    ' M$ k" F8 V7 Y) q- r' B
  108. 108
      n: e7 L; o! x( K* |
  109. 109              the corresponding trigger event (rising or falling or both).
    ' z. `1 s8 h, |2 E* T
  110. 110
    8 x. Z, I2 N4 {5 q( o- B7 R
  111. 111  * m& `- a3 W( Y& h" x; Q, _! U
  112. 112
    - v% }, Z# f; y: H' S* w
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority2 u- }; U& n0 I
  114. 114 7 s7 C: R0 G( l  ~5 Z& o  N! [
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
      ~. ^( y& Y( Q- J4 S5 W8 g: |
  116. 116
    3 J& j7 w; X) O1 }5 b2 u
  117. 117         HAL_NVIC_EnableIRQ().
    5 M* T  s2 |+ Q- F+ b& L
  118. 118
    . R' T) v  w( Z2 L: s
  119. 119         
    . z6 b% `+ S% k) O! L+ f+ ]. u5 @
  120. 120 1 ]& n6 w! H, p8 _, d( k$ A
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().- h& v* ^- B( |* V2 o
  122. 122 # @- T: u: ^( o6 |* O4 ]
  123. 123            
    , C; B6 `+ ?1 J+ z- D
  124. 124 : g3 X4 {5 x; ~: \
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    ' W1 U5 s2 C) B  m# y
  126. 126 3 p3 F! o" O4 Y+ h1 h+ R# I
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().# K/ B+ g  J2 {
  128. 128
    1 D+ A0 l0 A  M  E! [
  129. 129                 
    6 ^" {  H. x/ I: p* Q
  130. 130 ! s1 [( j6 H" y, B2 Z
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().# y5 S$ d0 E7 O' v2 O) l
  132. 132
    - t/ I% d- k/ Y3 u( M5 v
  133. 133  
    . I+ K9 L' e. L$ z/ y6 r
  134. 134
      s3 E6 m$ [  n) V' l4 o! w
  135. 135                 ( w9 j( h5 w6 w( a4 f7 k
  136. 136
    2 B! v# I; A- ~# V* y7 N' w! e
  137. 137     (#) During and just after reset, the alternate functions are not" W- K( J: `2 k0 @, z0 w4 B( }6 w
  138. 138 : b- ]8 r' s4 J! t) A$ K4 l; ], E$ [
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG
    4 `3 K& Y$ r. b7 k
  140. 140
    % C, U+ C- q. _% ^5 G: V9 b
  141. 141         pins).
    % S! r0 m/ e6 n; [1 l
  142. 142
    3 k1 c. f+ l1 |. p) {2 q& G' S+ n
  143. 143  
    ; Z0 C* D* f+ d: t$ A
  144. 144 1 n. e6 C) E2 V
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
      N+ `8 P7 s4 W
  146. 146
    $ l  K- X$ {) J& D2 r# H: Y
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    # E8 g' g, `2 [8 L1 k' Y4 y* }
  148. 148 ) v; `; S, n% a6 Z" f$ K1 `! L
  149. 149         priority over the GPIO function.1 W7 F7 ~5 P. j3 o1 J8 F% v# l
  150. 150
    8 O9 R0 g. `& O- c1 x
  151. 151  
    8 ^( w0 w2 k. N9 W
  152. 152 ) Z( A( }7 h5 K" j6 C5 a, o; ~( J9 s, u
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as
    / A6 W$ ]+ u; k6 A  ]4 }# f
  154. 154 - O7 G# v9 c( o8 S7 B3 c7 m; P7 B
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.
    : }7 X( K5 D; M! V8 z7 }
  156. 156 # p7 I% e. a/ X# y7 g8 {
  157. 157         The HSE has priority over the GPIO function.
复制代码
9 \8 g" ?# c. g" c

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

$ o+ f( F0 h, W

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


1 `3 f. m+ U# ]+ H8 d5 F' y

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

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


' T/ H7 X) @, `  U& e. `

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 p4 A; x1 A( v! ?: ^. f8 u

Core_A

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


5 _/ Z- G. {+ e" D7 h) n# a) `

DAP

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

; u3 v& w  @' H! q

Documentation

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

+ }& C- }  ]& _$ M; l: u

Driver

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

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

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


2 p" Y6 X1 y, H+ h0 _1 F* }

DSP_Lib

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

! O& p5 c7 F4 _" C

Include

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


% w) ^' p0 t5 P/ q/ R6 O) ]

Lib

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

% d8 h0 H$ g) z0 {9 C6 u

NN

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

9 h6 A; E: x1 d2 f+ {& [0 a0 E! R

Packs

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


5 t4 w2 Y  L) Z% t. u5 Z

RTOS

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


% `9 {! @+ w9 w

RTOS2

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

$ A/ X% L  l. p8 [% w' Y

SVD

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


3 F; R* U2 y+ ?6 n6 r

Utilities

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

/ L( I. p8 {6 L/ `# W8 C2 Q

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

/ J" X: E, n$ C! {

1.7   STM32CubeMX开发平台

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

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

% B5 Y/ `0 u5 Z# N" Z! q+ V+ c6 d8 j

1.8   STM32H7调试方法

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

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

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

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

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

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


8 T4 Q  g( r5 o5 U9 T. q- R6 Y6 y

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

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

$ s/ f* h5 o/ h+ g4 p5 O" j

1.10 总结

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


& ?3 P# I' f# s4 r8 `. B( K1 a
) p$ z0 ^' \# X' g0 b8 ^* j
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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