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

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

[复制链接]
STMCU小助手 发布时间:2021-12-22 14:45
1.前期准备1 Z; H" @  _0 \) T8 O; R5 F0 x8 v
keil安装6 H: t+ n  j* _8 U7 S  B/ s
slink安装
' q9 j+ J( \9 h, K' I5 JSTM32Cube安装3 r  ]# m( z, N* J# Z7 q4 K0 M; p  |

6 h" X1 D% y2 L  _) y% ~2.开发配置
' \  E; X, Y2 _- S按照 STM32H7开发指南-HAL库版本_V1.0 配置
  _5 ^# }1 F  B5 q1 h" z% |+ J% u; C  y! e1 ?
3.整体把控5 r: p6 v- p0 X8 h
1) AXI线:(AXI线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了) + T# `, T+ ]# W
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。
$ P# W# }" ?, T7 B+ Z& K  k
, F/ P3 _; C' D6 c" t! {! f3 R1 gAXI的特点编辑
- h8 [, s3 F) e. k( N( M, S# K4 ~& F$ `
单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
$ ~/ ?+ |  V6 _# j# O8 f支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
9 ^1 f3 R+ ]! V* Q独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
3 u5 s$ O# |& o" |9 U- w6 Y增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。: s- t. _5 I* `2 o: n' I

# z8 f. T, ]4 ~, ]& {2)keil MDK需要使用 go to def (跑到定义)的话需作如下操作
$ K$ [- M+ p1 f/ P* L5 ?
5 k; M. o! g$ A: R9 n$ k
20200107134641172.png

  r3 b# w& V- e, W5 h3 L+ a% o: B* [5 j( X  s/ H/ N/ M7 P1 Q
8 X( x6 T* _# B% C% D. h. l& K8 ?
( `8 a/ `! G0 L4 ^1 e
' I8 _0 l$ x, m6 x9 d1 \9 ?

% \* Y0 O# j8 r$ Z( B% n; O& e10.STM32H7的FLASH,RAM和栈使用情况8 P4 v# E9 h) m, [
ROM, FLASH和RAM的区别
/ K+ P+ a- j: p3 D) h( H
ROM: 只读存储器-因而常用于存储各种固化程序和数据。/ c. X0 t) e/ o( \# g
RAM: 随机存储器-所以主要用于存储短时间使用的程序.它主要用来存储程序中用到的变量。凡是整个程序
" t4 S! @! V* W3 l( @# w1 u6 \% b0 E中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。
, u8 y$ H3 q: ~/ |3 v. d6 vflash: 闪存-因此适合用于做程序存储器。
! Q, ^* F1 Y0 V8 T" C$ f3 [
% _- S( r3 B, |; s2 D4 G11.第11章看得云里雾里的,哈哈,先放一放/ \" Z) J  O2 ~# M. V# d; O
12. STM32H7的HAL库框架设计学习' R/ Z% ]' A5 }

# }0 G( e/ G* U. F8 e9 `1)每一次开发新的芯片时都得先设置晶振* I( j, X) d# J" x, C
HAL库有一个专门的配置文件叫stm32h7xx_hal_conf.h***, 这个文件里面有一个很重要的参数,就是HSE_VALUE*,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如H750的外置晶振是25MHz,那么这里就务必配置宏定义为:' }% I( s  l6 ?" M8 Q
#define HSE_VALUE ((uint32_t)25000000)0 i8 r; l$ S% k, O; C. S. p
& l+ }1 l5 ^- d" e" i: B
2)MCU,CPU,MPU,DSP, w2 m7 t- x  @3 V% M/ [% {
9 x+ J  l& X5 T* J
13. STM32H7启动过程详解" [- F$ {4 ~" {9 x7 J
1) 启动文件
( ?5 p4 D  j2 E启动文件主要完成如下工作,即程序执行过程:4 B; J- m8 `" N7 {* f1 }

( I; }0 m! l" n- ^
  1. 设置堆栈指针SP = __initial_sp。
复制代码
  1. 设置PC指针 = Reset_Handler。
复制代码
  1. 设置中断向量表。
复制代码
  1. 配置系统时钟。
复制代码
  1. 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。
复制代码
  1. 跳转到C库中的 __main ,最终会调用用户程序的main()函数。
复制代码
4 p8 Z" S& x& b1 u! _
Cortex-M内核处理器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为使用主堆栈MSP。
0 }0 l* f7 L0 V  n* @& _  C% w( _4 c2 E$ @
2) BOOT启动模式(H7只需要用boot0 ,我的毕业设计是接地)
) ~& k" P/ O! F9 A
! O& R5 ?. V: x% }' n: ^) D关于DMA,TCM(ITCM和DTCM)和CacheDMA
" ^0 E6 v3 G3 n7 z7 z  l! F! i: UDMA: 这是一种通过硬件实现的数据传输机制
3 J1 A& }3 ]" A0 T  n- ITCM: ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线, 是cpu内核同flash及sram之2 P  s+ R5 V* L% n) W# i
间传输指令和数据的通道,
" p  l; t1 W7 j* JCache:Cache是集成在CPU内部的极高速的缓存,CPU外设的暂时数据存储,(信差),CPU,访问外设前,先访问它,' |- i0 V7 ?3 f. Z+ ?
如果有数据,就直接拿其数据,没有的话再访问外设: l5 m/ t4 M7 }0 [9 ~

7 L6 H- t  t5 l
. C8 ?) d% u& x, {& F2 j
收藏 评论0 发布时间:2021-12-22 14:45

举报

0个回答

所属标签

相似分享

官网相关资源

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