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

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

[复制链接]
STMCU小助手 发布时间:2021-12-22 14:45
1.前期准备: U; C+ U3 u3 F! Q$ O. A
keil安装
) _+ v2 o8 y- U! U9 W3 k/ L; Q' }/ mslink安装( i9 [( q( ]$ c$ v6 `
STM32Cube安装
0 j! f$ J2 `% N( u3 g  o5 d
7 }3 e7 h& l/ Z2.开发配置
/ J  o7 Z! \7 a( y$ E4 C3 V按照 STM32H7开发指南-HAL库版本_V1.0 配置
: t; e( }7 j8 b1 _, D
4 C$ w) X. F# q3 F+ {  s3.整体把控1 `2 s' v6 b& M, N
1) AXI线:(AXI线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了) 5 _& A# p7 B+ D
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。
0 f7 a$ f0 ]# t/ q  B' T# l' B" O0 h$ W+ Y4 e- h5 {5 {7 v9 q3 c
AXI的特点编辑8 w+ v( |& t( F

7 c3 Z7 S: c1 q# [2 @单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
+ X% e# }. V/ ]- k, Y支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
# R% |0 Z; B& B+ U( D独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
3 W1 e% d7 z/ R5 T+ I/ Z$ k% g增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。% o6 H9 u/ q2 a; W7 Z
$ a/ Y7 _% u' v
2)keil MDK需要使用 go to def (跑到定义)的话需作如下操作
7 R7 _, Q0 `& A" A8 ]# b7 J8 |: l9 K2 b( ?
20200107134641172.png
) ~; q0 `- \3 k& v
+ C" v# p- g2 O' W( g- X
…
7 e+ E% \4 f# p; c' {! N…+ f7 t, V) p) [5 _+ ^5 X
…
8 x2 u, ^4 i2 ?# S" Z
, q; L' E4 f, G% y10.STM32H7的FLASH,RAM和栈使用情况
9 p/ c; B8 V- j) s) wROM, FLASH和RAM的区别

6 y  e5 v. t0 \3 Q1 WROM: 只读存储器-因而常用于存储各种固化程序和数据。7 r5 b$ D4 C1 e
RAM: 随机存储器-所以主要用于存储短时间使用的程序.它主要用来存储程序中用到的变量。凡是整个程序. Q7 P3 G8 q& t, t' i
中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。
* _$ o* N+ p; `  R$ |* X) Q3 sflash: 闪存-因此适合用于做程序存储器。
0 M6 M' e: Y, K/ T7 J) u9 Y
' L; X9 C3 ]! d# s- e! h' g11.第11章看得云里雾里的,哈哈,先放一放
$ @  |/ \- e: `12. STM32H7的HAL库框架设计学习
6 }9 y  a. d! n. }0 {) i3 C" i8 d0 \" E2 j( ~. @2 \
1)每一次开发新的芯片时都得先设置晶振; x  i4 H2 ^0 `2 m$ v
HAL库有一个专门的配置文件叫stm32h7xx_hal_conf.h***, 这个文件里面有一个很重要的参数,就是HSE_VALUE*,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如H750的外置晶振是25MHz,那么这里就务必配置宏定义为:
8 Z, f9 f& @6 |& A( I#define HSE_VALUE ((uint32_t)25000000)
/ E: S; u# k9 ?% |* Q% {
. n* T  W( D( ~" I1 q; G4 O1 f8 f, b2)MCU,CPU,MPU,DSP
% Q$ @: d/ T* M! D
' \. R# \  L  m. U- E# p$ g/ s13. STM32H7启动过程详解1 F% }5 X, O9 `7 c7 ~  H
1) 启动文件, i* F; w9 b) R
启动文件主要完成如下工作,即程序执行过程:
! W) u8 Y/ F2 \) u8 T/ Z/ l' s% y3 w; n, Z4 }6 s: l+ D
  1. 设置堆栈指针SP = __initial_sp。
复制代码
  1. 设置PC指针 = Reset_Handler。
复制代码
  1. 设置中断向量表。
复制代码
  1. 配置系统时钟。
复制代码
  1. 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。
复制代码
  1. 跳转到C库中的 __main ,最终会调用用户程序的main()函数。
复制代码
% r: T8 h! v" D1 p7 J; C' b: p6 K
Cortex-M内核处理器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为使用主堆栈MSP。, c5 B5 f- L0 j$ q& T

  r) o! [: |/ u. O' `. p- f, O2) BOOT启动模式(H7只需要用boot0 ,我的毕业设计是接地)
: I8 _$ m9 m  K. G& h; {) y- \
: U3 n% C! R8 Y; f. G: e. ?6 _关于DMA,TCM(ITCM和DTCM)和CacheDMA
3 X) B3 V  U2 v% aDMA: 这是一种通过硬件实现的数据传输机制
- |1 |% @  z" KTCM: ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线, 是cpu内核同flash及sram之9 C6 [7 I# x8 k" c0 ^* s
间传输指令和数据的通道,
! s  C6 ~. k; s1 Q6 m: z* ~Cache:Cache是集成在CPU内部的极高速的缓存,CPU外设的暂时数据存储,(信差),CPU,访问外设前,先访问它,
. V1 Y! O) ^# [" t& b如果有数据,就直接拿其数据,没有的话再访问外设
1 P' Z- P3 q& j+ S/ |4 m4 t9 _1 v1 {/ y
  ]; D6 n' k8 h
赞 收藏 评论0 发布时间:2021-12-22 14:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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