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

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


, L. I* X9 I3 K8 w; C7 ~0 T' 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。


) I! K$ J) n$ q5 t

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内核,从编程的角度来说,几乎没有区别。
( N$ b; Q; ~& Q2 w2 [# U7 C) @. e5 U


& ^4 @' h0 G: }+ N

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


9 ^/ x1 p% Y" Z) O4 D2 o1 |2 Q

1.4   STM32H7开发资源查找

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

/ [& t0 G# _% k2 f

1.4.1      开发文档

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


& R; \* e& a( R) P

参考手册(Reference Manual)

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

8 {+ H& ~! S4 ^" h( ^  |6 |

数据手册(Data Sheet)

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

/ t/ V" R. o- t, v

勘误手册(Errata Sheet)

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


; z8 L1 h7 p" W4 W( e. j

闪存编程手册(Flash Programming Manual)

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


- }% @0 {* P0 k6 E! C" |

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

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

5 Q1 C! @/ ]6 Y" `* m  p

应用笔记(Application Note)

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


, d" H) f" M( t- B( z! {

用户手册(User Manual)

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

4 g# h- J: m+ u5 q. h

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

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

3 `( Y8 i1 `9 a7 z$ y6 m" F

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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

+ {3 p+ _% r. @$ y- r8 i6 ?" D

1.5   HAL库介绍

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

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

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

' J/ s6 B0 d8 o" o6 y, p

  1. 1=====================================================================# `! E0 `2 b* v2 u; K& i
  2.   2 " S8 e" ?  p' B
  3.   3                     ##### GPIO Peripheral features #####
    $ U2 z9 ~9 c6 |9 ~6 b4 S1 [  d
  4.   4
    + z# `1 P7 W  H. {4 V0 S7 J
  5.   5======================================================================
    # w+ @2 r" m+ Y
  6.   6
    3 G! E4 I' _) m6 j
  7.   7   [..]  Q  F5 S' u$ s) e, ^
  8.   8 % L  N; `' W: F  b+ c" v) N
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each) o. F* u( v5 d+ l2 p9 z, ~; D3 y# c
  10. 10 * t: \5 q4 N3 ^
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software. n1 c( P, w$ t, |# a9 {& v6 s
  12. 12 * ?) _& @) i. k* G% A
  13. 13   in several modes:
    7 h- m/ z4 C5 r1 b2 D( u" u
  14. 14
    , @0 h6 h, S* T6 T
  15. 15   (+) Input mode
    , I/ Y8 W1 k3 ^6 B
  16. 16 ) a, ^2 y$ ?4 @9 Y
  17. 17   (+) Analog mode
    $ L; C* V. ~) P' u) l
  18. 18
    6 ~" I, ]9 I5 J1 Z; ?2 [, p
  19. 19   (+) Output mode( x3 G! n# e8 f, N
  20. 20 - J( `( N7 L% l1 v; l
  21. 21   (+) Alternate function mode! ?! }( l: {; N7 Q+ J# |4 K
  22. 22 " _  o2 E4 V) S
  23. 23   (+) External interrupt/event lines
    ! E; m4 q& d4 _5 t. p1 K! _* p% z
  24. 24
    3 |6 R# }9 _4 ?1 T4 l% y) B9 c
  25. 25  
    ) r5 x) K6 p3 x
  26. 26
    8 W! f  @/ z, |4 g2 N
  27. 27   [..]
    ( a( M8 C: M+ G% q+ z
  28. 28 / J% x# n. ~3 O' ^) q. g4 Z
  29. 29   During and just after reset, the alternate functions and external interrupt ( p4 |. o9 o. E- Y" q
  30. 30
    * b# T1 j) |! S
  31. 31         lines are not active and the I/O ports are configured in input floating mode.
    ; g% \  @% v/ _) p
  32. 32 ( e- l% K1 x" m
  33. 33     % G3 C1 S" e/ b4 X. o3 y/ R
  34. 34
    3 Y: L/ q! F5 q
  35. 35   [..]   5 M/ |& j5 s% O
  36. 36
    2 }. U" K% _$ S. u
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be
    , e% _8 z$ c: @5 K- ~
  38. 38
    ) w: R/ X, _2 P! A9 N
  39. 39         activated or not." {& `7 w+ E, Z4 S/ B, K$ V
  40. 40
    ! k0 ?2 W) J' U' `: s3 i  [
  41. 41  
    / {- V1 a8 O# O- g* e
  42. 42 & q. b5 E! K! ]5 x! P. [
  43. 43   [..]
    , S; m4 n+ S' p" v
  44. 44 % u4 ?8 A$ J, Z* O/ o
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
      Q. @1 c8 j: H& Z, {
  46. 46
    0 X( `! r' l/ O  b" r5 c9 [
  47. 47         type and the IO speed can be selected depending on the VDD value.
      n" t5 L9 L. Q/ Q' ?
  48. 48
    % ^0 R3 e5 U3 e, j4 S7 c
  49. 49  
    + K1 G/ {2 w- x2 Q
  50. 50 + D9 H) l% x& ]/ n5 f0 E9 N. h
  51. 51   [..]
    . K: P! O. Z5 ?7 ^/ M
  52. 52
    # f0 `/ ]( b! |) n6 D8 i. u4 e
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    ( k" \7 ]5 P" Y
  54. 54 + ^0 B! A8 P4 }3 k( d6 H, R0 {  P
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are
    " m- b6 c. S8 Z, r* S7 }. v' l% g
  56. 56
    4 b9 f6 l" N% f! D& B- q
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.
      X' a" I8 Q) _2 t1 d
  58. 58
    " U7 {. m0 `3 H' i% D: d
  59. 59  
    & ]- F# a" {9 N
  60. 60
    5 `  r* Q$ g( e* Y* S% Q2 a
  61. 61   [..]
    + k. n0 W0 M" w$ e$ i- o5 p
  62. 62 6 N+ ?$ T8 n; X. o; @; v# M4 c
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors/ ^* w$ F! d2 L; [2 L" A4 B
  64. 64 7 E6 }1 ~  N6 S" t
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    ( i8 z! W& N& Q# s- R: y( w2 d
  66. 66 $ `2 A% s( T/ T5 o7 |8 B# F  d" C
  67. 67         input line can be independently configured to select the type (interrupt or event)
    4 W0 T! h' y- o) W# q
  68. 68
    % J0 |+ u0 e; H) W6 z7 m# H* \
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can) }6 p0 j/ b3 }# c& h) G
  70. 70
    1 a* d+ T, N1 S0 ]/ T0 `; v8 _
  71. 71         also be masked independently.& E. L" }# n4 i( `. v
  72. 72 * |7 y3 D6 i# F; \5 T
  73. 73  
    % ^2 c; U6 y0 x
  74. 74 0 R) Q+ @8 }+ w6 ~1 q' Y- u$ }0 D
  75. 75                      ##### How to use this driver ###### Z4 n- C/ W4 y3 Z3 c
  76. 76 . Q9 P7 X2 z4 m3 K
  77. 77   ============================================================================== 7 y/ ]0 X7 b0 P
  78. 78 0 x4 s3 y! w2 z# o
  79. 79   [..]
    " _( H2 L2 I' d" k
  80. 80
    6 M( j% j2 D4 K* Z! R% I5 u/ `
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().
    " ?* r6 \; Y+ A) W& h) Z& g5 ^
  82. 82
    3 I1 w2 |/ W9 m& S
  83. 83  ; \. S4 K* P" l
  84. 84 : i" }! g& \. |
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().- o4 k2 \7 J, O
  86. 86 . @1 @7 U$ x- B
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
    ! q# p: ~1 [& C* k
  88. 88 8 Z$ n2 Y5 [5 n2 `( I
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef
    / L& @" G3 }2 c% ~, O% A
  90. 90 0 J$ H9 E5 Z/ e
  91. 91              structure.
    ( j! R4 Q% g9 ]8 U! M2 r/ c
  92. 92 ' S+ p! j8 \6 }) z7 D3 M& u
  93. 93         (++) In case of Output or alternate function mode selection: the speed is' I7 l" E5 f6 s& Y6 j3 Y+ W
  94. 94 7 D8 E; |3 M- \
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure." w: {& _! S: X+ G: V# W! X
  96. 96
    0 P) P" g- k7 x: `
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO  Q9 R1 M; E; W$ |% T+ q: b  x" B* V& W
  98. 98
    ' s/ x; m+ A9 Q3 V. D# i7 m! d7 D
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.
    $ ]" t3 Z# F+ p; ]9 g
  100. 100
    6 H/ |( }% r2 u0 i$ c& L4 k
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel
    7 I+ I( d5 l' y( Q) S3 R
  102. 102 4 p& L/ n) Z8 z. O- u
  103. 103              or DAC output.
    8 B7 [" M( k2 t( ]
  104. 104 3 r+ i1 H/ l" ]2 h: n
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from  c$ V5 E0 K5 \! _9 F6 A
  106. 106 . Z; e: w7 A: d1 ~
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and5 U9 L( q. E9 y3 e5 U
  108. 108 7 e- U( A: Z, K: S. Q& q7 p- j
  109. 109              the corresponding trigger event (rising or falling or both).$ E2 G* J" v. p, U
  110. 110 ( j% u! y! n( c' |
  111. 111  
    9 |, P+ `0 b1 Z5 b' j# }
  112. 112
    7 B' b6 I2 Y! p, U
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority) d0 `& ]: C$ U
  114. 114
    - O- I: ?' f8 h, O
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
    + d7 S, Y# a+ f6 _* n9 V/ [, c/ D, X
  116. 116
    5 C" `7 ^9 t! g+ b. H% S5 Z
  117. 117         HAL_NVIC_EnableIRQ().$ z5 \8 J" E5 m
  118. 118 $ H% W3 M2 E7 B
  119. 119         2 r6 K4 m$ z% P3 l
  120. 120 ; }, q( C) D: R! \- b) n
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().
    ; q: @5 @+ C( f  w8 U- |
  122. 122
    6 }7 u2 k4 H3 t
  123. 123            
    " o" Y) M, K$ w! M
  124. 124 % [0 n* T8 D+ O/ ^
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    : R7 V% W0 ~: i& H
  126. 126
    # J6 H/ Z6 m. S2 R% ?: p- H
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().
    4 S; y4 ~3 w) Z
  128. 128 " D: o$ p4 s8 g- \
  129. 129                 , W7 n% M* I! d8 w: K$ c, E3 T7 p
  130. 130
    ; M7 k! i; a* w- i4 b* g1 Q  A
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().
    ! K! Z: h8 m" R& z4 u! K2 L0 a% q
  132. 132
    * Q4 A  y  ^2 y+ Z+ A
  133. 133  " T0 q1 d2 |2 p, r0 ~) z
  134. 134 / }. }% o* E% Q4 `
  135. 135                 ) |0 \* E$ j) m$ O: x, I  h7 k' c
  136. 136 3 T7 A% S1 ?( {' V# O: C+ Q
  137. 137     (#) During and just after reset, the alternate functions are not
    + f+ F8 [: @- P4 C0 W# G3 J" ]
  138. 138 . i3 W$ N7 b0 j! ~9 Q& ?6 ?0 B
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG; I. O  J" W+ i; {' R' b
  140. 140
    & b/ g  e& h8 P4 A5 I+ r
  141. 141         pins).
    " D  y, L$ o' N
  142. 142
    $ i2 N4 z0 L& Y  J  @6 g8 h! i
  143. 143  
    $ }( o4 R# p; z6 G+ h2 ~1 g
  144. 144 ; ?0 J3 F. g( @' ^! Q9 j
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    ' r; ?, @$ u: d- ~, M
  146. 146 ( J$ q2 N4 i  Y' Z
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    $ ^0 o3 ~- f, e8 H. Y3 D0 H
  148. 148 ) ?% K! Z" ?! t8 j$ O5 U: k
  149. 149         priority over the GPIO function.
    : V0 S5 t1 X2 T3 i0 B8 f
  150. 150 + ^. K. s4 R6 ~4 ]! x
  151. 151  
    ( l  d% h! w) f$ y; e2 n2 e6 W
  152. 152 4 ?  E3 j1 s/ q+ B1 ?9 i
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as# X1 l  F, U% y& f! T* G
  154. 154
    ; X+ D& C, c2 V, h# o3 L* n5 w
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.$ e2 m; C9 A/ w
  156. 156
    3 m" b" o8 F0 _$ Z! d
  157. 157         The HSE has priority over the GPIO function.
复制代码

- l3 \0 t- N) l+ Y% C

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

! ~& d* m* A' {3 C0 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):

9 T3 y( a! s8 G3 H2 K4 U

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

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

+ a, ^' [+ B, ?  s

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

, f! M4 A. H# N& j% I

Core_A

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


; F5 V8 @  ^5 y

DAP

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

* L. e% \* j# Z- e7 O: t. `

Documentation

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


, C4 l8 u5 @" I  n- b0 g0 T# J

Driver

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

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

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


  w7 O, j; Q  u7 v8 E3 T

DSP_Lib

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


: t2 M9 G2 T( S/ Y; s; z; m

Include

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


9 A) Z4 @# e" w. L/ f8 p0 @" C' x

Lib

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


; W) F+ c/ T2 q( r1 H

NN

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

" }2 [& x3 ^; K' B3 z

Packs

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


6 Z" w7 N6 B, ^7 a8 o

RTOS

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


6 L- G7 o3 c" h) _9 \& s  W2 R

RTOS2

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


  ?4 Z9 _+ g. f. T$ I

SVD

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

$ u# {6 d( w( v: ]1 l

Utilities

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

5 g: k6 Y! P5 O$ [1 K

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

: q$ R# ^9 w$ n

1.7   STM32CubeMX开发平台

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

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

1 ]: r8 q; K! K& H5 I8 x# t/ ]

1.8   STM32H7调试方法

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

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

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

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

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

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


0 \, {: ^4 s/ H( |

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

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

; E. ~2 F$ l, \1 K2 ?% g

1.10 总结

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

2 e' O2 S" c$ z0 m3 Y! j
4 w! M: S+ ~6 A
赞 收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版