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

【经验分享】学习stm32H7之路开始(STM32H7系列1) 前期准备,HAL库框架

[复制链接]
STMCU小助手 发布时间:2021-12-22 14:45
1.前期准备+ b. d6 q0 }" G# x* B3 F( ^' A; C
keil安装
. ]. s) `, [7 o( o& ~slink安装
0 [  |+ b8 x0 ~! L4 i$ R" {( kSTM32Cube安装$ h0 H8 Z$ p; d

- A- N1 z" O4 `* P: m0 p9 M2.开发配置
& Z; S6 L  t  T4 z* z3 @3 ~6 z! g6 Z按照 STM32H7开发指南-HAL库版本_V1.0 配置
7 z8 o2 w. X# Z8 m8 h" G" G2 O
9 M( v5 v4 z& K6 p. {5 i6 `" E3.整体把控
' A7 p1 b) B) b& }2 E2 F5 \1) AXI线:(AXI线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了)
- }  ~( ^4 P5 |1 W3 RAXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。% s, U( h; ~# X) o& U" W/ D0 m
4 p& {* e2 T& Q' _6 q5 X: d
AXI的特点编辑
3 K! k: x8 C* W; E' p2 B6 V$ w8 ]* O" z1 I3 R+ S' ?8 F
单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。/ g  T' b$ z3 b6 J% s! ?
支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
' d. o  O/ s' Y1 M! A- \8 F# M独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
. }7 u2 E4 G- d$ N; W增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。8 S/ |. u" D" T8 X3 x. z. }
# u# [; L' b4 N- F9 t
2)keil MDK需要使用 go to def (跑到定义)的话需作如下操作
2 b* t# A* l1 z, \! S+ V. Z1 O: Z6 f/ ]
20200107134641172.png
+ y" }6 z1 Y9 l6 k& Y3 f
8 D; H& S& E* u5 Q

$ Y( \3 R" F& E& E, u6 D1 Z( r7 v9 F* _0 O6 x, Z
% A" o6 w9 B) s& O. R3 n

1 [5 \' G& D9 v) ]3 c10.STM32H7的FLASH,RAM和栈使用情况
2 q/ T; W  W# D. {2 BROM, FLASH和RAM的区别
, _$ a' L$ z  M# i) l" \% y1 G
ROM: 只读存储器-因而常用于存储各种固化程序和数据。
/ D0 y6 K8 R6 [- `# URAM: 随机存储器-所以主要用于存储短时间使用的程序.它主要用来存储程序中用到的变量。凡是整个程序
. H1 t$ U3 D9 V. r; `中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。- M; X: W" X2 S2 x
flash: 闪存-因此适合用于做程序存储器。
9 @+ y# ~5 L3 ]5 n# ]
: e$ Q  e6 O* m5 O" p  l11.第11章看得云里雾里的,哈哈,先放一放
( q/ w6 k" G* }& z5 p* @/ a  N12. STM32H7的HAL库框架设计学习
- S  `9 x% o8 o1 h5 p, @$ u
1 U( b* l+ e& o. a1)每一次开发新的芯片时都得先设置晶振2 J  e6 D+ x* U2 m9 ^7 u8 ?
HAL库有一个专门的配置文件叫stm32h7xx_hal_conf.h***, 这个文件里面有一个很重要的参数,就是HSE_VALUE*,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如H750的外置晶振是25MHz,那么这里就务必配置宏定义为:4 S3 r" i& O+ K5 |/ J
#define HSE_VALUE ((uint32_t)25000000)
+ K6 O* \7 a5 ~/ b: o( a0 k, u; Z
2)MCU,CPU,MPU,DSP
; c. g6 i- k7 k+ c, |/ D
: `3 E$ K+ h/ f13. STM32H7启动过程详解. |8 u& f$ j/ a! d
1) 启动文件
, N0 Y. J. w& J0 j/ j# l( y. D. c启动文件主要完成如下工作,即程序执行过程:
: \! T" K5 ]8 D1 X+ s3 G/ U& F1 m- m8 P$ ^% M$ L& u; \% B3 p& h
  1. 设置堆栈指针SP = __initial_sp。
复制代码
  1. 设置PC指针 = Reset_Handler。
复制代码
  1. 设置中断向量表。
复制代码
  1. 配置系统时钟。
复制代码
  1. 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。
复制代码
  1. 跳转到C库中的 __main ,最终会调用用户程序的main()函数。
复制代码
2 h: V6 H6 B: D; x
Cortex-M内核处理器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为使用主堆栈MSP。( P8 j; h( o4 `
$ r  F. K; k) R) B
2) BOOT启动模式(H7只需要用boot0 ,我的毕业设计是接地)" w0 k# }0 Y$ F9 Q
" J  C' n2 q2 P% A8 r1 `
关于DMA,TCM(ITCM和DTCM)和CacheDMA
( o% @6 \6 ]$ n$ T* n! f% Z9 L& hDMA: 这是一种通过硬件实现的数据传输机制2 h& \2 C' e' r# L5 n$ T' k
TCM: ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线, 是cpu内核同flash及sram之
! _* [- v7 F- V0 l间传输指令和数据的通道,* l8 r, a6 n5 V( u4 N$ g
Cache:Cache是集成在CPU内部的极高速的缓存,CPU外设的暂时数据存储,(信差),CPU,访问外设前,先访问它,
: N/ p, Y# ]: p' l. r4 ]0 s& p如果有数据,就直接拿其数据,没有的话再访问外设8 C& p* G+ o( A/ [3 M

# v3 k' y6 K; M3 G) S( w1 e4 e0 f1 b: G1 ^. w& G1 V) P
收藏 评论0 发布时间:2021-12-22 14:45

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版