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

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

[复制链接]
STMCU小助手 发布时间:2021-12-22 14:45
1.前期准备5 @: |! h0 F. p6 A
keil安装
! Q$ q8 y9 p% d& I' i6 R- A3 X1 Oslink安装
  Z0 k  x) S+ a, lSTM32Cube安装* t/ k  J% P4 f
% x& ^3 l% [' ^( h
2.开发配置; u+ f" n- G1 Q  p& ^
按照 STM32H7开发指南-HAL库版本_V1.0 配置  q" Y$ H2 @8 w7 c# W7 u/ }
; f* r9 b$ o6 P; c0 ?/ L
3.整体把控
' P8 S) C- v; p# @! V0 U  _1) AXI线:(AXI线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了)
5 x8 f7 J* o6 f4 j/ A7 L# DAXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。
  @7 e0 n4 {/ m* ?, [3 X
% a! f1 C, U& B' L0 w5 A5 t: UAXI的特点编辑
4 V; |! Y0 G6 O2 n0 u( I4 Q' H. E% M) b6 F" T3 f1 [5 Y
单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
0 u( S$ |% }8 L3 [! r0 [7 X" \支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
* X; N9 g+ ~( B0 X2 k" m独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
: s& X6 n+ L) ?. s$ i. z增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。
$ P9 l/ E' L4 d" r& \) e3 z* |9 O5 C. ?
2)keil MDK需要使用 go to def (跑到定义)的话需作如下操作
2 l) `  H0 j2 `* t5 |' R+ Q2 [% T3 [. E
20200107134641172.png

( D% F- i& C4 ~# r. @2 F. F+ b/ w, ^

2 ^; ]" J! i# S
) c/ H! A+ |/ q# C) B4 N7 ?& e/ c+ m8 o3 }8 H

6 r. k6 a6 H8 F' G  w10.STM32H7的FLASH,RAM和栈使用情况
% A8 ~( ?. G* o2 J, a6 i: wROM, FLASH和RAM的区别

0 U9 d" f" V; i6 L; b6 d2 mROM: 只读存储器-因而常用于存储各种固化程序和数据。2 }: @9 n2 }0 ^" t0 T
RAM: 随机存储器-所以主要用于存储短时间使用的程序.它主要用来存储程序中用到的变量。凡是整个程序
: b' D5 C6 u0 {3 ]2 Y  _" M中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。  d2 G2 g0 v- |5 ?/ A7 B  {
flash: 闪存-因此适合用于做程序存储器。
: X: t% [; Q2 s' `9 S4 t, _! `* X  E6 m8 J  e# w
11.第11章看得云里雾里的,哈哈,先放一放
5 c9 P) \' o8 g5 A) n; O; f" w12. STM32H7的HAL库框架设计学习  G7 S; }4 f. p- j

8 P1 L& n# y  J3 t- I1)每一次开发新的芯片时都得先设置晶振
: n2 \6 s4 Z) V% P5 W% b# U4 wHAL库有一个专门的配置文件叫stm32h7xx_hal_conf.h***, 这个文件里面有一个很重要的参数,就是HSE_VALUE*,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如H750的外置晶振是25MHz,那么这里就务必配置宏定义为:8 |! e) W% H) C
#define HSE_VALUE ((uint32_t)25000000)
: r  u' w: W. e! y- z( o" U6 r* Z9 R) C+ A
2)MCU,CPU,MPU,DSP
& D: o6 q, e- e8 f8 W2 i6 K! W6 y* F* a4 _$ {, l1 |
13. STM32H7启动过程详解0 W4 C$ q6 r# k/ v
1) 启动文件
; R9 V' n) f& M  \1 R) a启动文件主要完成如下工作,即程序执行过程:1 |% [% R3 j5 y3 _3 w3 E

, N% U* \& w+ {- L0 A1 {
  1. 设置堆栈指针SP = __initial_sp。
复制代码
  1. 设置PC指针 = Reset_Handler。
复制代码
  1. 设置中断向量表。
复制代码
  1. 配置系统时钟。
复制代码
  1. 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。
复制代码
  1. 跳转到C库中的 __main ,最终会调用用户程序的main()函数。
复制代码

% k8 h; s+ a7 P& `+ i5 WCortex-M内核处理器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为使用主堆栈MSP。/ L) s+ |/ i' Y# F. P; V

: u2 H: A1 T5 n2) BOOT启动模式(H7只需要用boot0 ,我的毕业设计是接地)2 q5 s8 f: I) T% e! Q! r

- }; C$ K: K, h0 a: Q; c$ `关于DMA,TCM(ITCM和DTCM)和CacheDMA4 x9 G. h& G3 {6 s% X% e
DMA: 这是一种通过硬件实现的数据传输机制5 H$ l% ~, D3 Q, U$ j& X( e
TCM: ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线, 是cpu内核同flash及sram之
/ d. f# s# }# a5 f间传输指令和数据的通道,/ c5 k% u( h7 K% q# k" a% O2 G
Cache:Cache是集成在CPU内部的极高速的缓存,CPU外设的暂时数据存储,(信差),CPU,访问外设前,先访问它,# }2 c- l, d4 U! w+ g
如果有数据,就直接拿其数据,没有的话再访问外设
! {9 z( v7 K* j0 Z# ?
4 s. S. t9 u* W0 d* r" R
. G: R4 q# g) t# w( j- W
收藏 评论0 发布时间:2021-12-22 14:45

举报

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