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

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


! s% D1 O0 E' F- o; p% P6 D1.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 G! q7 w0 [% l, F

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内核,从编程的角度来说,几乎没有区别。" p2 a4 m& i1 v: V0 P0 D

* }! P% V* ?/ Z( P

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


+ U# X* O7 D% v& D. ~9 @3 j

1.4   STM32H7开发资源查找

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

* X2 {. X3 S+ V( Z2 U& z

1.4.1      开发文档

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


: d4 A. \: Y0 J- [8 j! u5 h

参考手册(Reference Manual)

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


) k7 q/ z! {+ b  n( V1 \  {

数据手册(Data Sheet)

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


* t9 S4 ?# k! g4 _: T5 b

勘误手册(Errata Sheet)

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


6 P2 m' d5 L$ ^2 |( L

闪存编程手册(Flash Programming Manual)

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

, `* N6 s# p3 S) W

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

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


( a0 z7 e5 f$ t9 J* Q9 M; Y

应用笔记(Application Note)

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

3 y" F* i& B# v7 r' X! Z" w2 Z

用户手册(User Manual)

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


! |; \9 o% R+ b7 o: B" A2 V+ G/ ]

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

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


0 P% I7 T3 q; z

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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

6 U  ]1 ]: c1 r% M5 ?

1.5   HAL库介绍

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

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

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

  m  A4 ^' k- e

  1. 1=====================================================================
    4 n! p" g1 P, b0 D* K
  2.   2
    ) Y- W. K+ m- Y1 d- G' H+ K1 [, a
  3.   3                     ##### GPIO Peripheral features #####6 P5 |1 y  Q0 x  Z# a* l
  4.   4
    : G6 }- c3 `! Z+ h6 m& @
  5.   5======================================================================8 i4 E3 I  t# s' m
  6.   6
      u# H* P: b* G: S, s) M
  7.   7   [..]
    7 Q& M" Y7 z$ c: A
  8.   8
    ) v0 p( x2 ]: V7 O# b2 z3 l* w+ z# l3 ]
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each% s' V  \: S' G' y4 Q  ]  Q% `/ Z. m. ^
  10. 10
    ! Z+ i" d/ Y; w" b! U1 n6 y+ U& D: ?
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software
    $ e2 L1 Y7 U1 I
  12. 12
    3 j! |4 K" u$ S* i( e
  13. 13   in several modes:
    1 w1 J' m# b& @9 d1 a8 i
  14. 14
    ' M* A" H# m* i: o( i0 _0 J0 G
  15. 15   (+) Input mode
    : E) J3 Y- `9 ~
  16. 16 7 {3 _* \3 p* |; G: i/ c7 \; ^
  17. 17   (+) Analog mode
    2 `) y5 g- k7 w6 n
  18. 18
    1 |* Z2 J! s, R3 I, Y" m
  19. 19   (+) Output mode
    $ m2 C" J" M  W  H* }
  20. 20 ( {+ f$ R. }  P+ J' C
  21. 21   (+) Alternate function mode) G8 g2 `- r1 g1 ~- {9 J# O
  22. 22
    : Y; O6 f# J" n9 L# z& `
  23. 23   (+) External interrupt/event lines. l! p( ?( s( N- I7 o0 K
  24. 24
    7 n0 ]& j- g: I$ i0 Q& G9 \- k) M
  25. 25  
    7 h- W3 |' Z( E, t9 I. M  w
  26. 26
    ) E# I% E  U& n3 r
  27. 27   [..] . W- b9 Z( z  }# K: W, X' S' j
  28. 28 : u# w  @3 _1 m/ u
  29. 29   During and just after reset, the alternate functions and external interrupt
    $ [) z1 v1 O. {. q' y/ x( n# Y8 R
  30. 30
    ( A6 t4 Y' D8 c! {% c" L
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    9 O  E3 b5 X, X) S+ S* ^, s
  32. 32
    ; d" \6 s1 s/ a" y; p/ |
  33. 33     7 s- R, Z0 G) A3 a5 v/ X( n
  34. 34
    ( F6 m( f8 E- V7 p/ {
  35. 35   [..]   " a& m- p2 d& ^& K3 a; n4 S8 o
  36. 36 . W$ f- R2 `2 g  J; @  C
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be
    8 r& E0 G8 m  s! r* A  S8 i- S
  38. 38
    ( D/ o8 X6 g6 C. z$ A# M( |
  39. 39         activated or not.
    " {7 r( G% Y0 s! I
  40. 40 , q; X' u- A& Z% W- V2 F2 P
  41. 41  
    , O) H5 N& q, a
  42. 42
    4 h& O9 Q9 }0 c1 z! `$ n5 R
  43. 43   [..]& P; Z# h& b$ {3 l9 ~
  44. 44
    1 S6 ^9 f0 {9 b! K7 ~$ `
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    0 @* ]8 v. L  o6 P  C! k
  46. 46 6 A1 z% B" m% N* R0 _4 U
  47. 47         type and the IO speed can be selected depending on the VDD value.  m9 R- V. p  q6 b- F: {: n
  48. 48
    ' s7 }( c, n9 q  C6 E' y
  49. 49  
      G5 W) U( g" w! [
  50. 50
      z4 A  t5 j# P
  51. 51   [..]
    & k+ t3 t3 P2 b$ a1 p0 _& e
  52. 52
    " K6 Y4 U) q* Y& u$ J
  53. 53   All ports have external interrupt/event capability. To use external interrupt% E* `, O" a5 Q' \6 x
  54. 54
    ' q* A+ q' _9 N$ A' ~9 ^
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are
    8 \: ^& Q" Y) F: e- q5 }6 A4 y
  56. 56
    . T; u2 R8 W: L( ^" N
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.8 c% N  m/ c7 s" f
  58. 58 * }) \, e4 g1 l
  59. 59  # }, e4 B* z  Z# _* B
  60. 60 . c: ^9 U& |! J4 o
  61. 61   [..]; m7 d$ A; a6 G4 V+ u1 H
  62. 62 2 M* o+ A: f4 M: e+ b* U
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors
    - M' m- x! B( b# E! Y9 W6 U
  64. 64 & o6 w# X' }+ Q
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    8 B$ B- J$ Z/ S: z
  66. 66 : t% Y5 a  J  z5 x5 ^" e+ M
  67. 67         input line can be independently configured to select the type (interrupt or event)* D7 c/ Z& x, V8 s7 \1 b
  68. 68 / N. I& g: {: b& F
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can
    7 X) F6 w4 Q* E% q
  70. 70 8 r: r1 \7 M! J
  71. 71         also be masked independently.
    8 P' z3 _, A2 Z
  72. 72
    + j& M' S' R3 L& t7 p
  73. 73  
    ! v4 S. ^7 D2 Y5 F, w1 X* Q0 [( g: ~
  74. 74 # i6 d8 N  o' j$ E/ `+ S
  75. 75                      ##### How to use this driver #####. W4 Q) t: W' ?1 S3 o
  76. 76 + [6 d' O- Q; e# _+ \: k% D
  77. 77   ============================================================================== $ L& S3 y# \" p+ C, T+ K2 i  W
  78. 78 9 q6 H; c/ I) Y7 Y! |$ K' s. A
  79. 79   [..]
    $ g6 u6 T; ~# ~. h
  80. 80 " G9 I1 F, c: F( |. T
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().6 I( K' x$ r' y) e2 r% u+ Z
  82. 82
    ! l3 P( l  E# }; N# L
  83. 83  
    9 H& W5 @( h8 J0 ]8 ?8 B; R
  84. 84
    5 h- r* d; k6 [. s1 q
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().; S# e3 t: K# ^" W  {% u+ `; \  @9 C
  86. 86 $ [% F3 w* f/ y' Q% L) y  _+ N9 v
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure0 x( e' i) n8 u
  88. 88
    # a$ n6 L) V0 k* {9 v7 E& q
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef4 y' v5 j, b2 o  n
  90. 90 9 p; D6 l. Q( p+ o; a
  91. 91              structure.+ S1 `& s: z8 w) H
  92. 92 8 S8 L9 o: W8 p* y8 U5 H- g! G
  93. 93         (++) In case of Output or alternate function mode selection: the speed is8 B' o* @# J+ Q# Z
  94. 94 ' j, }) \7 q- i6 q1 o; N
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.& }1 }3 q. [- m" Z% [6 @
  96. 96
    : |' @$ R4 @# Y; V3 `3 E4 Q
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO9 T4 X6 i( m! [6 A" K
  98. 98 : Z' d0 ]1 f$ B& c! S- N( u
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.. X( l# f2 S* G
  100. 100
    7 j0 H2 |$ e* ]+ R
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel$ B2 W' c. F: Y) m: x5 R
  102. 102   Q; `! n. |/ _7 F
  103. 103              or DAC output.
    9 W" N( P- P. z7 p- w5 F
  104. 104
    : K; g  N7 R6 R3 B6 P/ c; g
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from7 E6 b# x- x  @8 R6 {
  106. 106
    5 _+ V7 Q* @; [6 |8 n
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and
    " g/ U. b: v4 f9 j" [
  108. 108   D: Y; t# E! z
  109. 109              the corresponding trigger event (rising or falling or both).
    $ p8 N/ B9 U3 l3 X1 h( y
  110. 110 % U/ c" I4 w* {. _' C( f
  111. 111  
    3 Z% n, O: N- T# I; j0 X
  112. 112
    / y! Y. e# t6 v* Z
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority) h( O) c' H6 n- D3 C$ ?; j
  114. 114
    3 G7 N; }$ e" ]+ R9 x& X
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using2 ], m7 Y$ M( P! w6 T
  116. 116 , T7 l4 l+ p5 B# P  X( ~( i
  117. 117         HAL_NVIC_EnableIRQ().
    0 a( l6 d5 ^- W0 O! e
  118. 118 ; M" R5 u  H( ]4 c
  119. 119         - x1 G# ^; [7 I- q% w
  120. 120 $ V/ y% E1 H6 a; J0 j# p/ R  K
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().
    ' V* r$ ~$ [; {% j2 M3 A
  122. 122
    ' [* p& U) `: a- [. P
  123. 123            8 J$ \. H: M8 ^5 m# F
  124. 124
    ; \. q" f$ a8 `+ M! c- j% W
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    & ^/ i8 \/ V0 G! ^: e: d
  126. 126 * I2 A3 t; N; [, {' `9 G
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().% f8 G& D$ N/ a) H* t& D, r
  128. 128
    7 I( d( H, Y' M) q) N
  129. 129                 
      d% Z0 t% W6 f! X7 z  w
  130. 130
    + Q" r* O2 N2 V! [/ {1 k4 b* C4 t8 V
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().7 y! Q  A' `+ I0 u" B. }. ~+ U
  132. 132
    ' _% x1 G. N' z' `
  133. 133  % S4 e; ^, U' A% `3 s# v
  134. 134 / a4 O! Q+ `# W3 J) Z7 ^
  135. 135                 1 P# J; }" N9 |" O' s
  136. 136 5 Q1 c5 V3 G* J; f1 C* A+ k
  137. 137     (#) During and just after reset, the alternate functions are not
    ; ]5 a* {0 u3 B. ^
  138. 138 4 U9 X& m' E# Z& q0 f) C1 f
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG& d4 J% x0 g4 Y% \& a  S
  140. 140
      U! G- {4 f8 @9 @$ q' w" Q
  141. 141         pins).
    ( C& p' |2 R. o& h. {$ _
  142. 142
    " l( i% e4 r* v0 y2 o
  143. 143  
    + W- S/ Q' y$ q4 T4 T
  144. 144 % D  X# ~( }; [2 u
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose# D- t1 w" L) g+ _6 _8 a
  146. 146 3 _: H7 u8 f* p& ]  V6 S& a
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    1 n: `; B) I) T  \! P
  148. 148 8 M. E0 [) u: s) o/ e* k1 u: y$ w: X
  149. 149         priority over the GPIO function.
    * h% s3 P! \! e7 I' Y8 I8 Q3 m
  150. 150
    , J% u3 w& }* W6 \- p
  151. 151  
    3 `' S/ o& A# \1 R& P
  152. 152 7 i6 }: F% \: }) y! S5 [. }0 s* d
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as  V; g1 L% _8 {7 L
  154. 154 " q% @" j( a$ d. a  |" a
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.7 m3 V9 G+ }# G/ D# m
  156. 156
    ) A4 n. k; X7 o% y" m
  157. 157         The HSE has priority over the GPIO function.
复制代码

% k: l( ~+ c$ n

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


5 k: z$ A5 _' z* ?

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

& B; H1 {+ j, v3 n& b9 s

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

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* g$ I  r* j8 K8 K2 o

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


( {5 e+ N- d1 n  K8 B) e0 P. U

Core_A

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

7 E* B! r# `0 w! c4 l2 ]$ _( _

DAP

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

; ^  r) m- N$ \' v2 Q& s

Documentation

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


( d* ]! p' V* P8 I

Driver

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

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

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


! w) q: h4 L, c' Q# H/ o

DSP_Lib

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

$ [+ n0 h5 X0 `+ @* `& w: b

Include

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


- [' p' r% A; ?# G

Lib

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


# ~$ Z3 i# U, _" z

NN

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

- ?: ^( W) [- z

Packs

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

+ U8 E3 W* g$ f' ~) C2 X% ~/ q

RTOS

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

" M1 Z& n2 ?+ R6 @

RTOS2

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

( b9 i7 h, g# N- L0 \" G& }  T1 N2 G" K

SVD

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


9 g- M- W% _4 M5 e

Utilities

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


  S0 H1 b& V9 q6 ?

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


" c7 c: ?$ h- J1 `

1.7   STM32CubeMX开发平台

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

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

, J0 z) L. G; A% {0 I& q0 M

1.8   STM32H7调试方法

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

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

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

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

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

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

* ?" K* _6 B1 n8 x- p

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

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

( x; L( ~- u$ ^2 o0 f

1.10 总结

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

; |. x# z8 _- M# S
# f* x& n) g# Z0 @
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

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