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

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


& t3 j& ^, W' w: b1.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。


4 @0 d6 j; d9 G9 l  a9 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内核,从编程的角度来说,几乎没有区别。
& W0 Y7 t5 B3 d% f9 C# T: j


. a2 J) j1 o" q7 Y  u- e

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


% U5 K  E' Y% p

1.4   STM32H7开发资源查找

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

) G) X- }- @1 `: S) S% q/ K2 |

1.4.1      开发文档

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

1 m2 [0 i( r' G! |* |+ P

参考手册(Reference Manual)

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

- R# N- x, R. \( i

数据手册(Data Sheet)

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

% x: Z" q$ I7 W- q0 g5 n6 t

勘误手册(Errata Sheet)

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

- G( y- s' v# h

闪存编程手册(Flash Programming Manual)

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


9 l6 L/ f4 y% O1 k0 U% Z

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

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


; |7 d) w; `, H: h/ e1 y& L2 j

应用笔记(Application Note)

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


6 h: T* t2 K  H% h

用户手册(User Manual)

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

/ B7 B, C; N4 F  X

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

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

4 r5 `- L4 w+ t* b* o! H. N

1.4.2      软件包

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

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

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

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

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

点击ACCEPT进入下面界面:

点击Login/Register

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

; t7 @0 V+ ^( l0 m0 ^

1.5   HAL库介绍

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

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

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


2 j+ }& ^6 n0 T' J3 q6 t

  1. 1=====================================================================) J" o# G8 l2 u' K  b  s
  2.   2
    4 u1 S1 e+ r- w, C2 @+ {* B4 a3 a7 X0 f
  3.   3                     ##### GPIO Peripheral features #####4 u( s  S+ L" U# i; c. |
  4.   4 4 p* E( b$ Y& t. {
  5.   5======================================================================
    2 M! t! M' |1 O$ g! ^( [: m2 D
  6.   6 ; N  _5 ~/ }( B- q3 D
  7.   7   [..]! s4 z9 B- w/ r8 u, K
  8.   8
    . t- [( [2 q. Y# q1 r+ Z) ^
  9.   9   Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each2 O1 n9 p7 T" I3 d" r
  10. 10
    6 ]3 j# N  O. a( J
  11. 11   port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software1 E& d$ r6 X9 s; b# [
  12. 12
    0 {. H# f. a& ~! q% y$ i) K
  13. 13   in several modes:
    ! X7 V/ c( ?/ p+ H+ }7 _4 y9 W
  14. 14 ( m" ?- E) w3 D3 M2 U
  15. 15   (+) Input mode, B3 F4 A$ f$ h: S. o+ Z2 t
  16. 16 1 |" J; t4 i& J" B" K
  17. 17   (+) Analog mode
    ( b0 c7 m; i. D! |! T
  18. 18 4 j3 p: W/ i" l0 d
  19. 19   (+) Output mode9 p7 l8 r8 Y) k+ o+ T, r9 o6 F
  20. 20 ; B$ ?" s, S6 ]1 n! A7 ^
  21. 21   (+) Alternate function mode
    , f" J' @) L3 u6 o
  22. 22 - m' _6 T3 n/ F( |. s' S
  23. 23   (+) External interrupt/event lines/ |+ ]) V# X+ h& J4 _) \: d# P3 W
  24. 24
    - J' A1 g% p% r
  25. 25  
    # B# O; \( W2 N! D0 c$ S
  26. 26 : }- K1 C0 ~6 X* b' @/ I
  27. 27   [..] 6 J3 ]5 e+ s& w7 L- D/ c& A7 }* n
  28. 28
    ! A  u, s0 d& O( F, z% F  m
  29. 29   During and just after reset, the alternate functions and external interrupt , n) ]4 _3 _: S; u8 h1 r$ B; y
  30. 30
    ( e" H3 ^) |4 \  s0 E/ K& x
  31. 31         lines are not active and the I/O ports are configured in input floating mode.- U  H8 N3 a* g  U9 B8 x* W# Z5 }# b9 T
  32. 32
    * ?1 C* D$ {, H5 h) v% [) y9 i
  33. 33     
    6 w: \+ b- h" K; }* F+ z8 d
  34. 34 + l  b: b, F$ m' U
  35. 35   [..]   
    $ n; w5 h7 P9 M' i- ?* ?
  36. 36 2 V( G2 n% n( j
  37. 37   All GPIO pins have weak internal pull-up and pull-down resistors, which can be- c6 i# q3 y* u* b1 m  Y& k% E, k
  38. 38 8 S- F/ W: L$ D* Q
  39. 39         activated or not.
    , Z* U3 e& l6 S
  40. 40
    ( Z7 q: S& d; A3 P( z! a0 P
  41. 41  
    & _! S! n; U8 X5 Z8 b
  42. 42
    3 ?% v- r6 M5 l5 r; v
  43. 43   [..]5 u* w, c, @* Q" S, K0 @4 ]4 M
  44. 44
    0 B) d* A& }) F* ~
  45. 45   In Output or Alternate mode, each IO can be configured on open-drain or push-pull
    : O5 |) B" F. k$ L+ R0 m
  46. 46
    0 ]/ w8 F% P# Y  c* P" F
  47. 47         type and the IO speed can be selected depending on the VDD value.6 D7 e) O* T: w' Z
  48. 48
    , ~3 q2 n2 ?2 B7 o0 w
  49. 49  
    " x7 d1 M. X+ y, ~
  50. 50 9 J% x' i; Y. n9 e
  51. 51   [..] 1 w& q* d# m7 ^7 {8 {, k
  52. 52
    - U5 Z* P1 X6 g2 r
  53. 53   All ports have external interrupt/event capability. To use external interrupt
    5 }: S& o9 X7 }! e/ e1 U8 S; Z
  54. 54 6 x: c, a1 n6 o% p( W
  55. 55         lines, the port must be configured in input mode. All available GPIO pins are* P* }/ W* N, b6 Q! z
  56. 56 & M1 t* A0 w% {+ E+ x
  57. 57         connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.' e; `" y- Y3 U4 S7 o
  58. 58
    + n# Y( i3 Z3 G
  59. 59  4 h" e; ]/ ~+ C, X, }1 i
  60. 60 ! ?+ \/ S9 W0 s: P
  61. 61   [..]# w. {$ n0 `) s' {5 \
  62. 62
    0 @  H4 Q" O+ p6 |* L1 {: C6 t
  63. 63   The external interrupt/event controller consists of up to 23 edge detectors4 ~" I! _& @/ [' F
  64. 64 9 a5 o8 S$ z3 q: x, y; Y
  65. 65         (16 lines are connected to GPIO) for generating event/interrupt requests (each
    - p. p  E6 o, g
  66. 66 0 g! F! R4 J: Z; ^! }) r, d7 X
  67. 67         input line can be independently configured to select the type (interrupt or event)2 O1 R+ K7 l6 j
  68. 68
    * L( j) D1 H) F( L1 v6 @5 S
  69. 69         and the corresponding trigger event (rising or falling or both). Each line can
    / L8 O! i+ z# _% Q/ }
  70. 70
    2 @- ?- N/ ~3 T2 {
  71. 71         also be masked independently." L# D( X# ~$ y8 O5 f
  72. 72 " u& N* P3 ]! g; z, q
  73. 73  ( r! V+ w( p; E$ _
  74. 74 ( D0 ]) p1 A# ~6 T
  75. 75                      ##### How to use this driver #####$ u" q2 X" [, c0 F
  76. 76 ! m" a5 H, W& p
  77. 77   ==============================================================================
    ' L+ u" V( H9 b
  78. 78
    / w4 u+ i; Q: e! |
  79. 79   [..]
    $ M) `6 [" |: E7 Z% v% L! r
  80. 80 ( Q  @: u# g9 k
  81. 81     (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().% E3 e1 y$ u9 Q! N
  82. 82 # ], j( r. I6 y6 a! Y, c- M
  83. 83  
    5 d0 j% X% \& c$ u
  84. 84 $ Z9 U% {! }* G' Q
  85. 85     (#) Configure the GPIO pin(s) using HAL_GPIO_Init().
    2 o3 Q* ^1 C' O4 A
  86. 86 8 h. T) P+ U$ G8 ?
  87. 87         (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure" N) e) `. ?! g
  88. 88   o  i1 G! \! M
  89. 89         (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef+ o& v" N8 W, J* l' s
  90. 90 , @% j) z! Z5 |
  91. 91              structure.
    4 m- M& B+ l2 m! L! s& @, C5 D
  92. 92 3 w7 b) J5 ?( d1 N. m( u8 B
  93. 93         (++) In case of Output or alternate function mode selection: the speed is5 I) z0 L5 K5 `# ]
  94. 94
    + i" H. O4 L/ I' Z  ]  F6 Q: [
  95. 95              configured through "Speed" member from GPIO_InitTypeDef structure.+ E! H& @; _0 V- B; Q
  96. 96 , r8 U0 M8 @# e3 f0 S0 i. {" u
  97. 97         (++) In alternate mode is selection, the alternate function connected to the IO
    5 s$ W+ o2 ~5 ^' J8 t
  98. 98 # ^7 J" K$ K4 p( O4 u, P4 o; S! J
  99. 99              is configured through "Alternate" member from GPIO_InitTypeDef structure.
    0 ]4 G" {5 W% t# f* B8 P. B
  100. 100
    ; T+ H* v( a  ]7 `5 s( g- X% u
  101. 101         (++) Analog mode is required when a pin is to be used as ADC channel
    : r$ Q" R8 K6 o
  102. 102
    0 K2 ~8 @9 m* {( {8 F+ L4 N" b2 Q2 Z' _
  103. 103              or DAC output.. ^5 Z4 @) ]0 `' g* y  B) J0 B
  104. 104
    - W/ C/ \: a" R  j
  105. 105         (++) In case of external interrupt/event selection the "Mode" member from" K& F* ^1 j4 ?' o
  106. 106 ; Y# J# i1 e1 a0 f" m( [
  107. 107              GPIO_InitTypeDef structure select the type (interrupt or event) and
    % z3 ]! k. W. g+ z# Q) \
  108. 108 + g+ B) [( a& y& I# R% d$ X. U- ~
  109. 109              the corresponding trigger event (rising or falling or both).
    - ?  D8 l# C) o+ r) A/ n
  110. 110
    ; J2 z  c6 k1 x' E0 P+ B
  111. 111  
    ; l7 X4 g% p' w' ~
  112. 112 ' g4 R, o$ E' q, x" K' H
  113. 113     (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority# q: d+ S& u% ^3 O
  114. 114 ( b  S- w+ @: n5 ?+ S4 v) M8 Q
  115. 115         mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
      f! q$ U3 N+ U% U5 s
  116. 116   a: W% S4 H) S: Y
  117. 117         HAL_NVIC_EnableIRQ().% y* B# q6 }- R  C
  118. 118 % R# \. s$ ?5 k- d/ q& p" x
  119. 119         
    ( ~& f3 _! f; Y  U! c! o
  120. 120 3 N/ |( A9 D- D
  121. 121     (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().6 q0 Y3 P# a# `* N
  122. 122 6 j' S1 \/ e% z  T# {
  123. 123            ! ~( I* o1 t2 L/ w) R, L5 Y
  124. 124 $ S& i& s+ B( |* l* @
  125. 125     (#) To set/reset the level of a pin configured in output mode use
    ; m2 _! e2 E! h2 R9 Z
  126. 126 / i- x; x1 K/ Q. j. b& L, U
  127. 127         HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().- N0 u$ V0 h3 r- j0 O; g
  128. 128 0 t2 y+ b8 @/ W
  129. 129                 5 N2 r6 t; t: k9 |
  130. 130
      L+ P8 z$ i$ q9 }* {
  131. 131    (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().
    % ?3 v! M! [3 J
  132. 132 6 \7 |7 ]* f" c% C8 W8 R4 x! q
  133. 133  
    8 i9 z; F+ D: _8 L/ p" p
  134. 134   e( U% Y) d- a# h
  135. 135                 ' _3 t  P# Z$ E
  136. 136
    % z( z+ Q7 Q: r/ j* @" f
  137. 137     (#) During and just after reset, the alternate functions are not4 l* G/ g( \6 W
  138. 138
    ! A% _6 z7 W! ]  E" `
  139. 139         active and the GPIO pins are configured in input floating mode (except JTAG0 c8 e+ K5 [0 S, N2 K+ g8 l
  140. 140 ! @' v6 i( F: H# w( I8 N
  141. 141         pins).
    , G3 M8 @+ f  W( X) P. \6 i- G
  142. 142 . U6 f: i, X# |$ j# W1 h/ j
  143. 143  
    9 N+ q% W9 r9 S- N% }
  144. 144
    7 o- V4 l4 H$ O( Q: C8 Z2 d4 u) Q
  145. 145     (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose
    & c8 J1 K" E7 x( G$ @+ t- H1 l* e
  146. 146 ) Z9 B' w0 n6 d; m
  147. 147         (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has2 i% O% v4 W- J6 n: v7 Q2 J4 E
  148. 148 , e" I) U6 p5 Q; j8 A5 v3 _
  149. 149         priority over the GPIO function.
    # g  K9 @% \3 Y( m! x1 h( e
  150. 150
    * ]1 `- w% D- G4 ~2 R: v1 _( T2 \
  151. 151  
    $ d4 n6 G: e+ ^3 q6 v2 h
  152. 152
    & [* G# n' W6 C; E' R1 i
  153. 153     (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as% ^1 L& D. I. R2 Y( m9 B( ?) I9 t( t
  154. 154 ; @9 c( m4 t% G1 H* C
  155. 155         general purpose PH0 and PH1, respectively, when the HSE oscillator is off.0 n0 L3 d4 {. u0 K% F1 F
  156. 156 : \- m# u+ D- A
  157. 157         The HSE has priority over the GPIO function.
复制代码
( K# |1 @7 t# {( [  v5 {" F

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


& S6 m- m& [) e9 g

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


$ X" L+ U3 n  o' T, A* k) ?

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

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


; j/ J( ?- w' V

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

8 ^3 H/ P! l3 s; n, Y  u: e

Core_A

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


+ t2 w! R5 K9 M  z  S- Y& q4 J

DAP

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


( _/ p- o  b* i, `! R5 }

Documentation

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


1 U# t- H3 j' ^9 [

Driver

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

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

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

' c' x7 P! o5 T

DSP_Lib

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


  _/ }* S* N4 A( D. X9 i* i' A

Include

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

+ e9 E5 j: C! k* I

Lib

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

; ?& S$ y4 O( ^" l- {0 z* n

NN

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

8 `8 }  L) C6 b7 e

Packs

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

+ l6 `5 }5 W5 K$ H5 N; q2 [

RTOS

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

/ }- C: R8 h0 Q! N, _

RTOS2

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

8 [6 ]  j: N" ~9 A" E

SVD

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


6 L! J' y1 F6 L3 c

Utilities

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


" @% Z% z; @& O( L( o! i

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

8 H' D6 ^% V6 h7 @5 }: N- |

1.7   STM32CubeMX开发平台

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

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


. s" P. A& \- a- r. A

1.8   STM32H7调试方法

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

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

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

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

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

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


. x; K- C7 f. b" A

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

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

9 O4 L9 t0 v+ A1 }" j. Z

1.10 总结

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


% J; i+ p* K9 J8 E0 |" Z7 c: p0 t, P+ b7 X
收藏 评论0 发布时间:2021-12-25 10:45

举报

0个回答

所属标签

相似分享

官网相关资源

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