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

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

* x& F6 D" O" n3 D+ }6 V
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。


; s- O) \4 L% @

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内核,从编程的角度来说,几乎没有区别。2 @; [" o/ q4 _9 k" H


9 c" q& z  o, V& t( _: r7 @

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

, R! A0 z- k% k5 F0 ^' S) O

1.4   STM32H7开发资源查找

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

/ [& C2 V4 B5 T

1.4.1      开发文档

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


4 `9 g" o* X9 _7 P4 n

参考手册(Reference Manual)

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


) G2 e5 p  z1 k/ R4 Y6 K

数据手册(Data Sheet)

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


4 j" t7 J$ B6 }2 I, U0 O6 |- V

勘误手册(Errata Sheet)

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

& K/ Z4 y4 e4 L2 M" @! m

闪存编程手册(Flash Programming Manual)

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


/ a) A7 H, x3 ~

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

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

; M( k1 j) ^& C  K$ j8 T

应用笔记(Application Note)

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


; r/ h+ t9 g; f  \3 e

用户手册(User Manual)

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


/ S% N" c% _5 t" Z9 K" {. G! B; E

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

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

8 H3 x2 y) t  d! G8 V5 E) l$ t

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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


4 ^" y" V, `+ @% m" c+ R8 s+ m

1.5   HAL库介绍

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

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

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

" }- `; g9 k  b6 a4 ?

  1. 1=====================================================================
    ! e: R5 o8 z5 U! t/ a' f, k
  2.   2
    - a1 h5 L& Q& W, i/ M+ ?5 I
  3.   3                     ##### GPIO Peripheral features #####* ~' C) k$ n6 F# g+ ]' |+ d& u
  4.   4 / j  {$ Y5 L$ ?6 L$ ?! a3 z1 G
  5.   5======================================================================2 k+ `0 l4 v  P* O. c( Q- H* R3 V
  6.   6
    $ e  q: k# e+ x7 N6 m% R
  7.   7   [..]
    0 ^, I8 v9 j* o+ s# I, X% ^' C/ S
  8.   8 6 }" C  y! O8 B
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each* Y. c# T  t1 H
  10. 10
    & w# \6 R# h. U! {; M
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software: \9 V% `" }( A1 S3 l) u
  12. 12 1 c& M! }7 y9 h" @0 |
  13. 13   in several modes:4 X# ^. E# m4 m9 K
  14. 14 % f1 p6 ]& l6 I' A
  15. 15   (+) Input mode
    1 h& b- d2 J3 h* I" b9 `
  16. 16 ! q4 W1 b. Q: }5 b. R- v" b' q
  17. 17   (+) Analog mode
    2 }$ Y5 y2 Y" M" j
  18. 18 6 J& l% l  C. Q- v; C# B
  19. 19   (+) Output mode% x- Z+ K6 q, Z6 n* J7 b
  20. 20
    3 f- c) d2 @7 c- x; _" D4 m
  21. 21   (+) Alternate function mode
    # ~* N4 S; @) }0 c& E5 X9 O$ x& |
  22. 22 2 r/ S9 p2 ]0 G4 |6 g
  23. 23   (+) External interrupt/event lines8 P4 K/ F, p% ~9 l1 R+ N3 |! f6 ~
  24. 24
    $ Z+ X# H# t1 @7 J) J1 n
  25. 25  : S: d# H5 ^( \- b
  26. 26 9 ^# M8 [* Q* Y9 b. N- V
  27. 27   [..] % k6 {; m( z4 ]# |6 z4 g/ Y+ d
  28. 28
      ^8 J$ b  N5 q+ V+ w% E8 d
  29. 29   During and just after reset, the alternate functions and external interrupt / s* k8 r# Q2 T, c
  30. 30
    # N2 F/ ], m/ s7 i+ s2 ]7 `
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    0 @; c  `8 p" u& n
  32. 32
    ( p0 F7 A6 n4 u
  33. 33     / |. G8 c/ m! O) _4 A: l
  34. 34 * p- _& I6 Q. S, v" z2 ?1 T( {
  35. 35   [..]   . P2 b) Q2 v. S) s
  36. 36
    % ~; c; `: L2 e) @0 n' d( o! |
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be9 [5 k! R' }) Z' |
  38. 38
    " k: q5 q7 G1 H* I. u5 M
  39. 39         activated or not.
    : ?7 z0 y& n) I5 w0 l' l; J6 |
  40. 40 9 O% B( p% b, Q0 M
  41. 41  ; c5 L9 j) z# Y* T. s; f
  42. 42
    ! T! k: f' \* p$ x/ l7 _" F6 K5 A
  43. 43   [..]* w' r8 K# m3 A
  44. 44 # I$ P, w. q' Y5 l* z. F0 e+ t4 x& j
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    - r, V  [( b& f- F
  46. 46
    1 c* b/ q) V9 y, b0 k
  47. 47         type and the IO speed can be selected depending on the VDD value.
    ) t' Q+ G4 }0 B1 I/ C$ P  D" F2 r
  48. 48
    * A% {8 R$ ^) z: m4 o# t
  49. 49  : x4 k0 {; K' C" N
  50. 50
    ' B% ^% A3 B0 Z- Q/ ]
  51. 51   [..]
    & C. \, @5 J/ E5 i* I; Y, h) m% I
  52. 52 2 I7 M. |; l7 z  e7 C6 W% s% w
  53. 53   All ports have external interrupt/event capability. To use external interrupt6 ~( {# A# T& J6 }
  54. 54 : |( W7 A& j( ^: i( V& G7 E( S  O1 q
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are
    $ ^- T  L' ]) ~! O( p# `
  56. 56 ( D% N: @! w7 v1 k2 P; K
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.6 v& M1 P* v, ~# h
  58. 58
    # G) K- G" R' V
  59. 59  
    ! R9 O; v9 `4 j4 K0 f
  60. 60
    2 H" i# R+ T# W8 o, m
  61. 61   [..]$ M, F. |. o4 e/ E
  62. 62 " I+ t8 L  A# _& \2 r2 s- q
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors
    3 H9 a5 y  M/ l* f" b9 F
  64. 64 3 V7 ?1 {" c& Z6 Y& `5 A
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each; K5 H& D9 o2 d& ~  f+ F4 D
  66. 66 + U$ D; h3 Y0 {4 `3 C
  67. 67         input line can be independently configured to select the type (interrupt or event)
    ' |5 a% B, V! g. w( K# n3 L
  68. 68
    7 j! P' T- Z' J
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can3 V; T* h3 ]' Z
  70. 70
    ; B' C) U" k' `0 c6 i
  71. 71         also be masked independently.
    ' l  Q* ~- p. u# U2 ?
  72. 72 2 ?' R& ~8 d. W6 |% e8 o
  73. 73  
    $ Q) Q6 h- b, C4 X" F* P. M1 u
  74. 74 3 {; C( ~) g( M" w
  75. 75                      ##### How to use this driver #####4 ?+ R3 f- X. X$ T
  76. 76
    ( M, u0 E+ J' N5 L& ]1 P
  77. 77   ============================================================================== , T% O  `) G8 O- E, N" R
  78. 78 + Y% n5 b1 O' J' ~* z5 P. f
  79. 79   [..]
    , m" B: B% B/ [& U# X% F5 s9 T
  80. 80
    , X# v8 I1 F! K/ I- S
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().
    * l* i  E, L. v
  82. 82 & K% s9 C& G" E  P# F5 f2 K- S
  83. 83  8 F; L' e: ^% g4 J
  84. 84
    7 [9 T# E0 x1 l& z3 \
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().# Q' `* u. p: c! Q: Y9 _
  86. 86
    $ B0 Q0 P0 d5 _
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    . W% J, m+ M  `7 z* z
  88. 88
    + W0 q* ?. B" N% A3 m; S9 k$ Z  p
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef3 W: I% p: A1 \( w# K& C5 x
  90. 90
    - N# b: }, O7 ^( H" B
  91. 91              structure.
    7 E: H' b( ^- D6 H9 ^
  92. 92 : ]$ j$ L# I/ _! @: K
  93. 93         (++) In case of Output or alternate function mode selection: the speed is
    5 p4 J! i1 P/ a
  94. 94 , {& M" B2 g! R( G( Q, M+ t' @
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.
    5 B( q4 w% S, S1 |; ~5 L" x( t
  96. 96 5 `- L" {9 K" D- P/ W
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO
    9 e1 o: H7 n2 x5 K$ |9 N$ H$ Q
  98. 98
    + d* B8 ]0 S0 @! h
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.8 O- I/ V4 o: [
  100. 100
    8 y, T" t4 J, F( m* {
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel3 i+ c. b; u/ e9 {. Y* u+ H
  102. 102
    ! B  F8 m* Y& E% t1 N
  103. 103              or DAC output.1 ^% g2 m* m$ M$ s
  104. 104 " _# K3 z4 Y: I% i
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from9 v4 |: P5 Q* s  F, p
  106. 106
    + h8 }; ~+ T: J4 `; V! F& _
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and6 g+ o4 v7 t% `8 E
  108. 108 4 _2 D/ e' E$ ?7 }+ S1 Y" m5 B
  109. 109              the corresponding trigger event (rising or falling or both).
    6 j1 k4 t4 f/ _8 J8 e
  110. 110 8 c# j3 C. X- G& m0 [5 q# \
  111. 111  , W! _# A  d9 ~6 [
  112. 112 # t* O) @( Y$ l
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority
    1 Z9 }2 X( b! ~% R; I
  114. 114 $ g1 p% ]7 R) K2 _! L
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
    % F0 p: a& S0 P9 s- y' j  {  Y" W4 v+ R& A
  116. 116
    9 a  R! Y( F/ d7 k( d! |
  117. 117         HAL_NVIC_EnableIRQ().
    ! o7 b9 F; ~9 Z3 X4 K2 Z
  118. 118
    , y9 C5 P0 U4 {) g, p, q" I4 R. m. g
  119. 119         6 N9 B/ t8 a: V2 N  {" T- d& N9 u8 Y$ M
  120. 120 " |# C4 e4 x1 ?, T# }
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().
    - b; }% l0 G5 I6 [
  122. 122 4 X+ \- S6 i1 m. e7 I8 x8 G7 z
  123. 123            
    7 T) d! P) @" f: `& V
  124. 124 . T. c3 V6 v2 H! U6 v% m
  125. 125     (#) To set/reset the level of a pin configured in output mode use. r* b: Z2 y, C0 p: F: O, H
  126. 126 ' F/ a8 [9 n. A- E6 y0 {' K
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().8 F5 m" U$ Y( [6 B9 S6 P' H! ?' k
  128. 128
    ( N  e% j. a/ K# e" h9 c
  129. 129                   `1 G  I4 f2 w$ w$ C0 H* V6 C
  130. 130 3 Y/ p5 R% @1 n5 T- J6 \; y
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().+ x* H$ H; E( H" S0 @. ~0 q6 G, R; F
  132. 132 4 K# h) g& E7 E1 }
  133. 133  9 B( f) P8 x  a* {, L: N0 ^
  134. 134
    * H) b. j4 i7 V: w* \
  135. 135                 
    " e9 M) q, @2 S, h
  136. 136
    # I( ^) O- f& O. F
  137. 137     (#) During and just after reset, the alternate functions are not2 Y5 ~  G) h! Z
  138. 138
    . |. \4 \: f/ y& ~" q
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG
    & \- p6 ?7 c" c  X9 O) z4 S- r# O* i. y
  140. 140 " v; q) r0 v7 \4 y, ^; {/ y
  141. 141         pins).
    1 T# X8 S; C, w
  142. 142 5 A; R) U9 d/ L! j. _
  143. 143  
    0 z; F" N: e# p5 t; w9 w
  144. 144
    ; [% R# i; m9 H. c
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    : G# h. C  N  S
  146. 146
    4 T* v+ g( @* o9 q' _  I
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    + X0 N( r) Q; c. `; N5 `( O
  148. 148 8 n& Z" \* S. p" @3 ~2 [  m
  149. 149         priority over the GPIO function.
    ' g) j- T! ?$ \" F2 C; l
  150. 150 $ [8 {" ~8 O0 _9 D( [+ v
  151. 151  ) k. c; b9 B" P9 A
  152. 152 9 o. K8 H3 ]  f# j
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as
    3 c3 K. ^. Q: ^  X( S
  154. 154
    1 m: n6 W9 u4 B3 O! o$ _8 ^
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.8 Y+ F+ e; R. y4 m( V* t
  156. 156
    : |2 n/ T1 e; ~9 \9 t7 C; V
  157. 157         The HSE has priority over the GPIO function.
复制代码

; l, R3 G3 R8 M/ a- U6 i. d! q

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

/ `/ y( Y6 b, l! L# f% 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):


7 L) x; D- F& w4 t7 L, r

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

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

0 ^; o/ K7 O0 i* [' V7 P

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


$ p# g; T( ]* V

Core_A

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


& G3 f# }5 S9 m) t

DAP

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


+ j- R/ J# L4 T# K8 P( Z

Documentation

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


" r. }; Z+ Q  i% f; z" `

Driver

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

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

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

4 \5 G5 @+ }; e, |; K/ v8 e

DSP_Lib

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


9 e' u- e' p7 F9 F4 Z1 d) @

Include

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

1 v/ x' [$ Z+ x  ]2 C6 I7 f

Lib

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


$ l2 K2 G: ^& `" u8 n2 z

NN

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

0 g% T7 }- z2 J$ g) b" ?

Packs

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

, i- d$ `; V0 `7 C) t

RTOS

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


5 w, M: n# [4 E3 Q

RTOS2

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

  M/ W& L5 P: O6 c

SVD

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

0 o7 t3 n/ Y% f( X5 |5 j9 v# Y: X

Utilities

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


, D- j( Y) V) F. s! \

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

2 q. Z9 c1 o8 q5 v

1.7   STM32CubeMX开发平台

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

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

5 D2 y4 S; `; g% |" [* P

1.8   STM32H7调试方法

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

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

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

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

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

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

5 \1 X# \7 j, A8 A2 J& Z

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

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

# b) X5 a, n$ n. ^+ S6 }! |

1.10 总结

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

6 R) k! }! m5 ^. J
, C  R4 |$ I7 s1 J1 E
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版