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

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

! ^( I1 c, U! b- g2 m* r! _3 y8 N
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。


  @7 W9 J# u8 ?) K, W  ~- D

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内核,从编程的角度来说,几乎没有区别。
) H/ a/ M& J8 M! r" G


' a0 h8 v2 h3 c

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

8 ^+ |* o- \: r9 I$ ^

1.4   STM32H7开发资源查找

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


4 E7 [* f6 w; x1 Z3 K0 @6 ^

1.4.1      开发文档

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


7 W* ]/ J1 [3 A6 ?

参考手册(Reference Manual)

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


! v& o" e( u3 C- e

数据手册(Data Sheet)

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


9 h) G8 D( c4 J1 w' K/ I6 M# @

勘误手册(Errata Sheet)

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


; g* Y1 v6 a) e' S

闪存编程手册(Flash Programming Manual)

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

6 `4 m/ }9 C0 ?! ?

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

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

+ Y' [* m/ m" v. Z  q0 g

应用笔记(Application Note)

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

; h' a6 h0 c5 J6 \6 U% k% f8 G

用户手册(User Manual)

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


2 q( i* [) r2 _3 |' j! d* l1 z

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

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


5 B0 Z+ P1 l" i  e! 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的软件包。软件包的目录结构如下:

; y% W9 Q. m# c$ T8 A9 l7 i

1.5   HAL库介绍

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

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

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


: e! @7 Y' r8 Q; ]" l/ g

  1. 1=====================================================================
      ]; ~9 b# h( |8 _
  2.   2 . M! O) w% y. S0 a6 k6 e' Y
  3.   3                     ##### GPIO Peripheral features #####
    ! r" ?2 d1 G3 I! k' ?
  4.   4   o0 R  O, c! u. N7 [8 q/ X# [  E$ y) k
  5.   5======================================================================
    " U& Q" q& c+ C3 X; ~3 r
  6.   6
    # L9 M! r6 ]: n" U- g
  7.   7   [..]$ i1 m6 Q$ w3 D+ c6 C  C5 f4 h- f5 ~
  8.   8
    ) {+ F( Z/ a4 L$ @8 Y
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each. _& b! ]; w3 A' e' t+ Y
  10. 10 4 w4 P: t! f+ T9 _- `1 N; f; J
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software/ `! D0 H/ G5 ]9 C) a5 `8 L
  12. 12 / h6 ?5 I% w, B/ z
  13. 13   in several modes:# ?" i' A" Z0 q+ G/ ?
  14. 14
    ! L9 _. {0 }  |; T# h
  15. 15   (+) Input mode
    # V; b- [  [1 l  q( t1 T- x: Y0 L
  16. 16
    . B1 v2 |- v7 Z8 d! ?( M+ X  u: D
  17. 17   (+) Analog mode
    3 E. q4 |/ X' I0 G; E" y8 p7 v& h
  18. 18
    7 f5 m7 D9 @' r7 d1 u
  19. 19   (+) Output mode* E" y/ r# {6 L/ B( G( W6 ~
  20. 20
    : V  z% L7 u% ~# N" `4 P
  21. 21   (+) Alternate function mode
    1 {1 V. _$ h) {9 j5 {/ H& q: L
  22. 22 / J; ?3 e) S( ?% J
  23. 23   (+) External interrupt/event lines$ ~  Z; D# y. c$ _% K
  24. 24 9 s! d( l% {- K$ I8 A
  25. 25  
    8 F! |' [, C7 w4 }
  26. 26 , b& q+ G& T- j; e0 I& ~, N/ d
  27. 27   [..] : V) R$ K) L, w# ~
  28. 28 2 I4 c6 {- _& B$ o+ A
  29. 29   During and just after reset, the alternate functions and external interrupt
    8 t. Q( h" ]% q& L/ k4 ?5 H
  30. 30 0 ]& I+ x+ S" r: y
  31. 31         lines are not active and the I/O ports are configured in input floating mode.9 D. M4 p; J- C# s
  32. 32 " f9 b8 H; Z, b, U" q7 A
  33. 33     
    9 a9 ~* p$ c0 e8 V  s8 @
  34. 34   X( e; Y. x5 S3 B! g5 b
  35. 35   [..]   
    0 D2 U& A$ h* S/ @/ W8 w/ R
  36. 36
    " O, _5 O$ y1 C9 A$ X5 I* h. R5 x7 B
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be9 p2 }7 G5 ]  B) P1 w3 i2 D6 N$ }
  38. 38
    ) ~) D7 `1 q. ^  x- ~& l" S% Y9 }
  39. 39         activated or not.
    * {- ^. `$ I7 ]
  40. 40 1 u9 e: |9 X2 W+ e
  41. 41  " \6 G& \) B0 F: }* e, D
  42. 42
    4 w1 L; C3 y; t" @" J* g; [
  43. 43   [..]2 M5 O5 T) |; E  s9 `* c; u
  44. 44
    5 R" I7 _2 U  T
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull9 V1 l# K7 p' A5 `) L) p
  46. 46 $ [, @$ g; c- C$ D
  47. 47         type and the IO speed can be selected depending on the VDD value.
    * J( H6 y3 \7 D5 Q1 N8 h: u  m
  48. 48 ; c) M! {  X; s2 F
  49. 49  
    ) d! z9 O- N' s  Q- V8 \# ~6 R' |
  50. 50 0 m$ b2 s8 a0 W6 l3 h
  51. 51   [..] ' w) M8 Z8 y. t. q: O' N
  52. 52 0 \7 e; D% v3 J! G  a% z0 d
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    + S2 P6 k# v" i8 J/ N% U) b
  54. 54 0 [! R5 A! h8 N3 z, B
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are$ L) M$ {& v) r* q
  56. 56
    4 z) C- E" Y4 r+ z1 x+ |4 q7 Z
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.' M# _7 s% m1 Q9 u! }6 Y
  58. 58 5 c" s2 `9 I* i* }8 \
  59. 59  
    7 ]2 M4 h5 @0 m
  60. 60 8 M- [) u8 A* ]2 t0 H6 ?
  61. 61   [..]+ V4 Z; q/ w! t! f
  62. 62 2 p( t" W* q6 a, x4 \
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors
    5 E5 v1 q) m8 n- x
  64. 64
      n' q/ r* p6 ^! T
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    " ^( k! N; I+ [! z
  66. 66 ' g, v; m  z0 N; ]5 O; c1 D
  67. 67         input line can be independently configured to select the type (interrupt or event)& s% T1 p) U/ v! A/ }, E( C
  68. 68
    ! H. G/ `+ Z; H# g; n
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can
    & h& l8 m1 E# B. t: ]
  70. 70 ' l4 I% }" v* b1 N8 M; C6 x
  71. 71         also be masked independently.
    , \% Z0 F. H- I0 Y2 ~& e- L  Z. L
  72. 72 : h( H$ b* B3 B9 v- T
  73. 73  ; j. U% p  y- B! M9 U2 q3 E
  74. 74   C! J  l3 ^% E9 D
  75. 75                      ##### How to use this driver #####( W5 B" V% m+ x
  76. 76
    4 r% v  @0 i% N( a: b
  77. 77   ==============================================================================
    # _5 L. p* G4 I  E* K
  78. 78
    8 U7 s0 ~. `2 X  N( h
  79. 79   [..]
    6 z, |& X/ Q, s3 n& C' q
  80. 80
    & ]7 q! n' r8 u
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().4 }' e) O1 ~. z6 W0 j% D- V
  82. 82
    2 {3 ?; s2 U) A
  83. 83  
    ' s  f) k+ C9 }# L: ^- l/ E0 S
  84. 84 $ W7 D" l; M, V+ R" \* c
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().
      D. p$ F; K* g& o0 l' f$ m
  86. 86
    8 Z* v; d0 E7 f: e# t0 j8 E
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure" ]# _2 ~; H9 S" z+ Y
  88. 88
    . }/ L- ~  w6 ~, o
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef
    0 B, |; {; T8 N1 T
  90. 90 & B4 J- l6 R% U
  91. 91              structure.0 l8 H/ b) s. e. x
  92. 92
    , i$ J# [2 r% P& n- Y3 a
  93. 93         (++) In case of Output or alternate function mode selection: the speed is
    5 i8 M, y) N+ y: s$ x
  94. 94 , E3 }& l: C3 a6 v) A. v! j
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.
    . f$ e/ Y; C6 t9 @
  96. 96
    4 A& S$ }: k0 Y( V: ~3 Z0 r
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO
    / s7 |1 ]; z! u; l: B7 ]8 b
  98. 98
    ) ~& Q6 d6 P, c7 ?  L
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.6 U$ [, K: A. @+ ~' D3 h& @: |
  100. 100 2 I/ g' y4 Y6 F8 {; U4 P
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel* B: }: D1 M' P1 n( ^/ b
  102. 102
    2 ]7 ]* N- a. H6 t9 G  }
  103. 103              or DAC output.
    , n. ~7 K: Y& c5 j
  104. 104 ' d3 |8 V9 i1 e4 }3 `& C* }) H
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from
    / C8 d6 x; N" k/ x" }
  106. 106 $ x3 ^3 f6 ]/ G+ f
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and0 p0 k9 z8 F' _
  108. 108
    , k/ ~/ I6 }/ ^
  109. 109              the corresponding trigger event (rising or falling or both).' T" j. Y2 f# n( n4 z
  110. 110
    / I7 E8 H% |. y! Q/ w/ h4 ~* ]
  111. 111  
    ! Y$ Q; \2 U9 M4 T3 k2 i. Y3 q
  112. 112
    0 I" [! Z  P- K/ b# K9 W
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority
    9 |) j5 m- M& p" q
  114. 114
    % g% U0 N8 W8 C( k
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
    ( S  V7 v* i( Z8 q
  116. 116
    ' C$ \9 c9 P  r8 W  I% i
  117. 117         HAL_NVIC_EnableIRQ().
    % ^5 ?$ }/ [. z- j: Y6 I
  118. 118 - V) _7 c0 _: m$ m4 w# k5 Z8 H6 e) m
  119. 119         
    6 {+ d9 L9 a0 A+ Y* z' Y6 H
  120. 120
    : [' L7 ~' `8 e- e1 p
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().
    1 @+ O+ ?& I* a9 P* D2 U8 @
  122. 122 9 y% H" X; Z' Z, m* M+ ]
  123. 123            5 F3 x0 ~9 F# `. B9 P" R: ?
  124. 124
    # z/ x$ w% Y  \- S
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    - c8 m# E4 ~3 n8 d* y
  126. 126
    % j: ^$ ]6 L! v' M$ K# v/ [7 V3 s
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().5 d) \- k! ^& R( \! \' m
  128. 128
    3 U/ S- q* w+ g4 z; H& S9 w! k
  129. 129                 + g2 r/ l! U5 C$ |' ?0 ~: G5 Q
  130. 130 2 {+ U& N( c5 U
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().' E- L3 ?, b9 T, p' t+ t
  132. 132
    " k) D+ y4 W6 {1 R% T7 T! h
  133. 133  $ H9 Y& Z- b' }! B7 B
  134. 134
    & O- ?9 ~  q) ]# n; n
  135. 135                 
    " G2 x, E# K2 y$ r2 o, v
  136. 136
      a- u$ E( ^1 R5 `' B0 \
  137. 137     (#) During and just after reset, the alternate functions are not9 l1 Q4 L! b) O# v, o1 H
  138. 138 : [) p! _0 c! T; V
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG
    6 S6 h3 V: f% M$ m0 g* P
  140. 140 : g% w! ?) s$ O+ t1 Q
  141. 141         pins).% L1 p- y$ [$ R' r3 p
  142. 142 . o4 w9 s0 J3 i8 g
  143. 143  : _) R. U1 |+ D7 d, q* K
  144. 144
    & z2 ]! o! H* @5 k
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    $ j- K$ b. a" w: T6 D7 N
  146. 146 ( i2 x# w8 k3 r
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has
    ; e& [$ N- L; a9 L! ^/ n. j
  148. 148
    9 [4 G4 I$ ]' I* L
  149. 149         priority over the GPIO function.. ~) S* w+ H: h9 L- B  ]# ^1 H
  150. 150
    5 q! ?! Y' k  ~9 |
  151. 151  
    4 e5 _# A8 Q- q* O# n$ x* Q. C+ P
  152. 152
    " f$ [' ?, L% m% k
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as$ `3 a7 }/ S: S3 r& `
  154. 154 6 t5 I9 R- ~' D) \4 v* c
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.& q2 E, p) O8 W1 p# h* j  n
  156. 156
    3 T7 @* Q: Z3 P3 p2 i$ F+ }+ _
  157. 157         The HSE has priority over the GPIO function.
复制代码

/ p& j  Y7 T1 u3 l; J8 ?+ E

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

! n7 K+ X" S8 d( }. ?! S

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


" W# `; x& s  Q; b" }

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

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

# H# q( M9 X* y; f; l6 K' a# y+ a

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


2 h. V" p( e3 A8 C

Core_A

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


1 c( L3 K" r; n

DAP

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

8 C( \" U( {' F$ K7 }& J

Documentation

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

# W% a; n7 D' F8 X6 x9 M

Driver

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

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

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


$ t5 y7 O5 C7 `& w$ q9 x

DSP_Lib

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

7 b8 K2 F3 \) G" o

Include

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


$ K- Y0 x2 c2 k7 I# N

Lib

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


. z; u$ Q1 n! J: N

NN

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


( a. V* o% p( @2 P9 A% Y- j

Packs

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


6 @3 a% y; u9 M) T" s4 E

RTOS

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


* D, f, s$ N+ A

RTOS2

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

3 v' P2 R. m; q

SVD

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

; q( U5 x  w+ `4 ^4 r. B, B& P4 O

Utilities

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


9 b$ |" V6 x; p- x: o& X

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

& h$ i) \% B6 `3 `

1.7   STM32CubeMX开发平台

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

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

: t! r' Q3 `: @7 M

1.8   STM32H7调试方法

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

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

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

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

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

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


: X1 c, q; p: J, t% H: K! C

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

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


3 u* m- w7 h8 y% X

1.10 总结

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


6 F: Z. ]1 E6 ^0 G, P8 B) N" ~1 x: \$ \- ]; {1 A0 ~
赞 收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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