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

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


$ ]' j$ U$ Z! e- l, L- \$ v  q1.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。


5 k3 ]% R7 v! Y

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内核,从编程的角度来说,几乎没有区别。
0 k0 ~  X7 a! X- ~& I: e

6 ]8 V; B9 a  S3 v) j

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


' U* ]: r; X( ^' c

1.4   STM32H7开发资源查找

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

7 ~6 f  Y6 F( B1 [

1.4.1      开发文档

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

  y' e) S2 K5 {

参考手册(Reference Manual)

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


1 q6 F0 q& L2 u* }% R1 z2 O/ i% I9 r

数据手册(Data Sheet)

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


6 Z7 ^% f, i$ H* N

勘误手册(Errata Sheet)

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


4 _+ l5 g6 N, @

闪存编程手册(Flash Programming Manual)

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

: K7 K$ e! Z0 p8 h, [& V) Z

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

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

; k2 d9 I% O' u- l3 T# u

应用笔记(Application Note)

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


5 g: S: i; V! _& |7 W' Q& \9 J9 B  U

用户手册(User Manual)

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


" u( ]6 J! v. E& F$ [

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

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

6 V6 |6 P+ Q. ^0 N' C  P

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 o) N( K1 I5 C3 P

1.5   HAL库介绍

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

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

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


: b. x. {# H. h& g% d

  1. 1=====================================================================% I& E) \& B$ i  `& z3 h" W% c
  2.   2 7 G2 s7 k, N3 q; z5 ~( y$ @' ~
  3.   3                     ##### GPIO Peripheral features #####
    , u% M/ T8 m* B7 i) o1 V+ A
  4.   4
    8 i4 f. O- z1 d3 l  S
  5.   5======================================================================
    3 d0 T& k+ D; f. n8 L' Y
  6.   6   T1 U4 k* J  |, b: ]4 ]
  7.   7   [..]
    . [) @0 t* X, i
  8.   8 . e; i. \/ h+ J6 R+ J
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each- D) T- j3 t5 `9 w! L; ?
  10. 10
    6 J% ~4 N' k  _
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software
    # Q8 a9 Z+ w6 d
  12. 12
    . W2 ?, d) E- }; Z/ }3 Y( C' \
  13. 13   in several modes:, n7 x1 y7 A0 Y! W" B
  14. 14
    3 q* `3 f1 Z& B& X" R
  15. 15   (+) Input mode  E" v4 z8 |! ?; g
  16. 16 ( \/ g( X8 ^0 S
  17. 17   (+) Analog mode
    " P- l0 y1 `$ h1 `7 F
  18. 18
    * c1 {5 |2 @9 R( N. Q! X6 X
  19. 19   (+) Output mode
    . T/ z4 p' w. w5 C9 `
  20. 20 # g& B- s. j$ d) ]/ G
  21. 21   (+) Alternate function mode! q- m/ |( u$ Q; r/ H7 G5 ?
  22. 22
    0 }( K% Z2 U+ A6 @
  23. 23   (+) External interrupt/event lines9 \4 q0 X/ Y! y6 N6 Z, z9 C8 f, |
  24. 24 5 i1 b" {0 f. b9 i. H# n
  25. 25  
    1 A; E5 B4 \4 _. _5 s
  26. 26
    % V2 L3 I- g; ]3 y& n
  27. 27   [..]
      O! p  I0 r( Y$ S
  28. 28
    8 R2 m* B, i7 s2 |9 b$ _) B
  29. 29   During and just after reset, the alternate functions and external interrupt
    2 m' C2 _; ^9 V" ~
  30. 30
    2 V1 q1 d1 ]1 j4 ?
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    ! l  @5 K8 u* q" n8 i4 k' a; H
  32. 32 $ x$ F. R1 A4 }3 J
  33. 33     
    ' b5 T8 ^7 J, K- {- F- k6 H* }
  34. 34
    # {5 w+ q" N2 s. K$ c
  35. 35   [..]   * {8 P8 i6 ^! C* x" i, O) m! D
  36. 36
    ' ^( h3 U# V( }+ e' a
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be
    % b0 _9 n7 Z8 u# a5 I
  38. 38 9 k0 U( d# j3 A, Q1 H
  39. 39         activated or not.9 |/ t5 w9 h7 ]- o, A
  40. 40
    % B- Y6 [* F% d' D7 E
  41. 41  
    + q3 ]$ o( ?, D% q& \& i! \5 d
  42. 42
    % l3 P6 C' S- s. l
  43. 43   [..]8 c8 i2 n! W- s
  44. 44
    0 t- M8 s9 j. x5 F1 f$ R( b( \' p2 t
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull. s' y* N& e2 v3 o
  46. 46
    / s. a, S# }  n- }' E) h' [
  47. 47         type and the IO speed can be selected depending on the VDD value.5 N0 A9 O- H' @" G8 A
  48. 48
    6 d- K$ d' t: M; c3 v7 w8 ^
  49. 49  
    1 W9 P  @9 O7 E5 V- w
  50. 50 : P# Y/ ?/ l. g, v. w
  51. 51   [..] * v3 E4 ^6 C/ c7 m8 i
  52. 52 # x: ]: I7 S) s& G
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    ( L3 ]) f- m: \( {( P7 h9 z2 \: X
  54. 54 % w) T  D- ~3 T5 b) ~2 N# T" G. @) Z
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are6 ]& g4 Y; I* p
  56. 56 % M1 O8 }8 `6 z, G
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.+ |& I/ m$ d$ Q) F% s. B
  58. 58 9 ^5 {% d/ h% v- {
  59. 59  7 E6 G4 W& [, I$ T4 a
  60. 60
    2 q. j5 N4 r) ]& N
  61. 61   [..]
    5 D  g, s2 z; K
  62. 62
    ' ]8 P0 I& u* C0 l
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors9 \$ ]7 p8 e' H1 h
  64. 64
    9 ~$ U; X( j6 B" D. n; D
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    ) w5 }) H4 g& J. h
  66. 66 : S: G. f  r4 O0 L5 [
  67. 67         input line can be independently configured to select the type (interrupt or event)
    , C9 B2 W: {' P' A
  68. 68 0 A0 k( ?# ~3 o: Q4 h
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can
    - _; k3 \8 F9 h5 ?* j. s
  70. 70
    5 L* D) v  b, |# M- E! M- l* N2 ^
  71. 71         also be masked independently.
    , w& Q+ z) v  a
  72. 72 - q4 i4 j  a" q4 A8 B& N) E
  73. 73  % {3 n4 r0 _& ]
  74. 74
    ' B: D1 H3 Q' T2 u% d
  75. 75                      ##### How to use this driver #####
    * y1 C5 r/ m4 v. G" Y
  76. 76 + D/ ]; G( ~3 w4 L/ H! n0 L
  77. 77   ============================================================================== + k) l) s% _2 C
  78. 78 * V5 q  @7 f/ i. Z% l, m# i$ O
  79. 79   [..]
    ( ?3 \) b  C& J/ e' L( M
  80. 80 " ?' s4 A7 }: w; y
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().
    / F# n& A. R, R9 O: L4 X% c$ p
  82. 82
    ! T  a4 n, T2 _! U4 u
  83. 83  . ^; f& z6 Q2 K5 g
  84. 84
    0 r7 {6 g9 ]6 J% X" s% j
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().9 G; h0 t4 `& T: j3 {
  86. 86
    4 u! T% {9 X- h7 L  t; s
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    1 s2 Z  z! Q: R3 w* f  Q& j
  88. 88 % H& Q  _( ^9 n  C0 x; q5 [1 }* Z
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef# _( T' V. |$ m* Q. U. S
  90. 90
    ' I2 U4 Q2 a2 Z* {
  91. 91              structure.
    & e' u, o8 J- @! T0 H! m
  92. 92
    & ]% E/ h, l$ i
  93. 93         (++) In case of Output or alternate function mode selection: the speed is' T, c) s) ~4 S, F6 \' V% y
  94. 94
    & `1 v" h% M4 [: {* F4 Z5 k7 L
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.
    % L0 h- r' M5 Q+ }2 t
  96. 96
    8 _. p7 v* B% A  z
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO6 D/ W0 a) k' A# o' s  b
  98. 98 & e9 m. g7 G0 e0 m6 c) p
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.6 V; d" r8 N: e8 k- ]
  100. 100 8 m5 D3 T' k4 ]& s  U5 G
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel. o, W' y. z0 a1 u# Z2 d
  102. 102
    # ]: P2 t4 ~& U- E$ h/ R$ K
  103. 103              or DAC output.+ r9 X2 l* F% }& a& i( ^
  104. 104 9 ]! e' U+ e' O+ W3 P8 y
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from* _2 W& j% A) k
  106. 106 * Z+ R+ K7 ?- K) g% m0 Y
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and+ ?0 F2 |% l, k6 c
  108. 108
    $ ~2 q. p. B* o" ?$ p' I( P
  109. 109              the corresponding trigger event (rising or falling or both).
    3 x# X' \- v- R5 N
  110. 110 : y# t5 h% G3 ]! Y' a- o* L
  111. 111  " O3 _* Z: h: O$ O" b2 l8 y7 L
  112. 112 $ Z9 `4 v% a" y9 a% X
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority
    ! Z* N+ |3 w. a
  114. 114
    9 k0 B) W, w6 o
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
    4 G/ Y. C6 x2 e# L. W! H2 U" Y1 j
  116. 116
    % H. k, a& F2 n) q5 k
  117. 117         HAL_NVIC_EnableIRQ().
    5 I. `( j* b( k4 u
  118. 118 0 _7 n" G  D- c0 r$ `
  119. 119         
    9 F$ T( B4 s% {' n% g" n# Q9 P
  120. 120   w2 C8 Y- d) x; o
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().8 I2 Y8 d8 P$ \. _
  122. 122
    ( Y2 v: ~& [9 |; y8 }; e
  123. 123            , a# D& a2 B9 T- c2 G! m
  124. 124 6 F' G- `/ U. ?  H, J
  125. 125     (#) To set/reset the level of a pin configured in output mode use. M% D) t3 B5 T& l$ {1 [
  126. 126
    2 M- u. o8 ^. e( ?  C
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().* a4 Q% G$ Q  @" e) ^) t! l. i
  128. 128 8 l4 q4 K& j  U  P8 y( _( O
  129. 129                 * [6 A; D# n" T
  130. 130 ' m8 U5 v% f$ _- g
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().. C( O7 R" [# Z# P& d. ]. v
  132. 132
    , j& P  ^* W  L$ |- t" ~+ a0 s* T
  133. 133  
    $ e1 p( p( I5 z: O$ O1 b
  134. 134 ; G" T4 ?" s5 m# E6 k6 G, d
  135. 135                 
    5 ~. x% }# ?8 D
  136. 136 3 W8 R- I: S- z5 Q. @
  137. 137     (#) During and just after reset, the alternate functions are not
    2 [" T6 [8 N$ |2 H0 g
  138. 138
    3 b8 L5 b! _6 g$ s/ S6 T6 Y, u
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG
    1 l  q' g, `7 ?
  140. 140 7 P" J! p- h' e+ D
  141. 141         pins).
    1 p, K8 @% E# _1 s; {3 [/ Q: n
  142. 142 5 b; n4 R( b! {& T0 Q3 x
  143. 143  8 _1 `9 z! F" t4 m
  144. 144
    , v  O: u- I( V  m
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    . S" N% V, j) w  g7 N6 N
  146. 146
    3 @) J; ]( X& @& o& _: W2 {
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    9 j5 \8 U2 y/ G8 W( O
  148. 148 6 W# s! C* F$ l' L2 @8 m
  149. 149         priority over the GPIO function.7 Z+ ]3 a' a+ Z9 |
  150. 150 . W9 J4 D5 _# t) g" K; N. n
  151. 151    `! n$ L! `$ `* a2 q6 C) `- x
  152. 152 . `2 }$ Z5 }9 T, V, `; R. n% ]
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as
    . C8 O8 _( U6 k' r
  154. 154 : A- J; \" e8 H( O
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.6 p7 }7 \0 w4 u; z4 S
  156. 156
    ) S  w  W# j6 _( W$ W; p
  157. 157         The HSE has priority over the GPIO function.
复制代码
6 W4 Z* c) F' G5 b/ i  a

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


  {" [9 ~5 s; A! r: J

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


8 N3 X, K1 n. j: t5 v# M% S1 s6 Q

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

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

) [9 ~2 Y# m, ?* c0 l, \- f

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


' a+ x" u" y% V( r8 R* ]' E7 O9 l

Core_A

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


7 t' ?, @$ m/ ^5 B. K4 U2 W0 `

DAP

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

6 @8 Y4 {9 v$ E  i& W# [1 E

Documentation

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


$ E; c* X, A3 u8 {6 I1 Z* ~

Driver

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

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

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

7 Q- t5 ~. @7 X) D

DSP_Lib

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

1 ]; x$ Z6 Q' j) a) m

Include

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

; [: w: J3 a# F/ n

Lib

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

7 G2 b* j' M1 z1 l1 y* M- |5 k! u

NN

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

' {' S0 G0 |7 P) [$ I# W2 a0 P

Packs

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

- j: ?7 e% i* @  d8 i* r

RTOS

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

* H4 D( d  t' N' c/ }0 o

RTOS2

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

+ Q- z, s  r/ e0 z' i3 F

SVD

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

: F, s, d, N% n; A- o- p

Utilities

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

. k% l, l/ X* {5 ]+ z% l

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

" v' `! ^# s6 @3 F

1.7   STM32CubeMX开发平台

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

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


! }+ G, u; W( t( p% j+ p5 I

1.8   STM32H7调试方法

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

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

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

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

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

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

& [0 e6 {- H( t

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

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

& _/ S0 L- f) d0 o: @! B; G0 i

1.10 总结

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

1 Q3 t/ }) ]6 k" d3 K

8 p6 s  B: M* f0 w
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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