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

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

[复制链接]
STMCU小助手 发布时间:2021-12-22 14:45
1.前期准备
8 ^4 r9 H4 f4 rkeil安装
" M) C' o7 j4 @- nslink安装
- }) T! r3 p9 h" A8 TSTM32Cube安装# R, A: [7 |# Q1 S# [$ A5 F

4 \+ s- C9 B2 Y5 T4 z! ^" j# T2.开发配置8 Q$ k. v+ k4 F
按照 STM32H7开发指南-HAL库版本_V1.0 配置1 w& \0 i8 X& y; ?' B# d

* ?  ~9 u4 N" P3 V3.整体把控
& u8 i) M3 I0 q- F' `1) AXI线:(AXI线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了)
# w5 w" w: q8 Z, C0 Y% b" [AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。6 L( C% {- N6 f" W: w% c1 V7 V
  R) W2 @+ N/ g
AXI的特点编辑5 h7 J0 P$ o2 C0 o" R$ h

) [: G4 q( |  U' L$ }$ D单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。# H6 _( ~0 h  F0 e' g' _5 R, O
支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。2 C$ P+ p/ n8 J; A- S5 D
独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。4 F% `( K" }6 [
增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。
: W) M3 z$ P8 m; A8 b  r& o( K. Z$ G; C+ N3 h6 l1 h; f) l
2)keil MDK需要使用 go to def (跑到定义)的话需作如下操作
; u* B. y; J! u; E. T) q$ `& V& f! p" j+ v: y( j& h6 r9 R
20200107134641172.png
+ A$ h! b8 ~. N
9 s' B6 X7 m1 x: W0 ^2 s
' }7 E6 Q6 Y& G2 z* v% q" s

9 x" k% u, d0 Z1 n* X; r4 N
' V, O! I. G" j2 H4 ~3 }
$ t+ a% B7 e8 ?/ y10.STM32H7的FLASH,RAM和栈使用情况
$ I7 b/ z) Q! F# k" ~ROM, FLASH和RAM的区别

! g% }# W3 o% u) i8 |) eROM: 只读存储器-因而常用于存储各种固化程序和数据。
6 H$ Y) f# v/ _" i0 p( D& I4 r$ kRAM: 随机存储器-所以主要用于存储短时间使用的程序.它主要用来存储程序中用到的变量。凡是整个程序
& E9 z- S3 A; h3 `/ h9 R中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。6 s/ q! b; }( ]; x
flash: 闪存-因此适合用于做程序存储器。
: U  Q5 a9 R. Y- U' D9 k9 m* _1 ~' P9 _- D/ i- Y4 a# Y
11.第11章看得云里雾里的,哈哈,先放一放
0 f+ s: f7 M0 K12. STM32H7的HAL库框架设计学习) w) {8 \+ s! Z7 a5 m
* s5 ]# }) I/ R- O  J6 j
1)每一次开发新的芯片时都得先设置晶振/ D% j" b* y: Q& H3 x
HAL库有一个专门的配置文件叫stm32h7xx_hal_conf.h***, 这个文件里面有一个很重要的参数,就是HSE_VALUE*,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如H750的外置晶振是25MHz,那么这里就务必配置宏定义为:
4 |) X4 @! B5 N5 H#define HSE_VALUE ((uint32_t)25000000)
* p! Y% X# w* k2 W3 Z# p/ I) r1 i* `" P: o7 a
2)MCU,CPU,MPU,DSP
9 S7 t6 `. ~, L, f' `. u9 b+ P' x& [. Z
13. STM32H7启动过程详解. V' x8 _( g$ t) V
1) 启动文件: x1 F9 N  h. _/ o! U7 r, a
启动文件主要完成如下工作,即程序执行过程:
! W9 a$ l8 C, O' {0 M2 W: T/ m% W
  1. 设置堆栈指针SP = __initial_sp。
复制代码
  1. 设置PC指针 = Reset_Handler。
复制代码
  1. 设置中断向量表。
复制代码
  1. 配置系统时钟。
复制代码
  1. 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。
复制代码
  1. 跳转到C库中的 __main ,最终会调用用户程序的main()函数。
复制代码

: b: `0 Z! q  rCortex-M内核处理器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为使用主堆栈MSP。7 l; }8 i; C  E/ o

& X3 ~0 [0 m; F6 ~- A. c( T( A$ X2) BOOT启动模式(H7只需要用boot0 ,我的毕业设计是接地)
: r) Z* P  D2 `: I, U/ \6 V& Z9 ]. z4 ]2 H
关于DMA,TCM(ITCM和DTCM)和CacheDMA) i, E8 L' `9 F6 Y% L5 f
DMA: 这是一种通过硬件实现的数据传输机制
; H2 j) [, e1 G* x) f/ {$ c: STCM: ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线, 是cpu内核同flash及sram之/ M8 x3 O+ `# x7 y# k
间传输指令和数据的通道,; M( t* v9 F# G1 H7 ~1 T
Cache:Cache是集成在CPU内部的极高速的缓存,CPU外设的暂时数据存储,(信差),CPU,访问外设前,先访问它,$ U, G4 B) z/ J+ K  v  r# X
如果有数据,就直接拿其数据,没有的话再访问外设
( M3 Y* t  Z5 F  p, w* \
$ A4 e6 R9 ~, b5 \3 g  x/ U+ g* t  |- w8 O: l
收藏 评论0 发布时间:2021-12-22 14:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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