STM32 第7讲 STM32F407系列系统架构及映射

2023-05-16

Cortex M内核 & 芯片

在这里插入图片描述

F407系统架构

在这里插入图片描述在这里插入图片描述
注:64KB CCM(内核耦合存储器)数据 RAM不属于总线矩阵,只能存数据,不支持DMA,但访问速度快
总线矩阵:总线矩阵用于主控总线之间的访问仲裁管理。仲裁采用循环调度算法。


8条主控总线

1. S0: I-BUS
此总线用于将 Cortex™-M4F 内核的指令总线连接到总线矩阵。内核通过此总线获取指令。 此总线访问的对象是包含代码的存储器(内部 Flash/SRAM 或通过 FSMC 的外部存储器)。

2. S1: D-BUS
此总线用于将 Cortex™-M4F 数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的对象是包含代码或数据的存储器(内部Flash 或通过 FSMC 的外部存储器)。

3. S2: S-BUS
此总线用于将 Cortex™-M4F 内核的系统总线连接到总线矩阵。此总线用于访问位于外设 或 SRAM 中的数据。也可通过此总线获取指令(效率低于ICode)。此总线访问的对象是 112 KB、64 KB 和 16 KB 的内部 SRAM、包括 APB 外设在内的 AHB1 外设、AHB2 外设以 及通过 FSMC 的外部存储器。

4. S3\S4: DMA存储器总线
此总线用于将 DMA 存储器总线主接口连接到总线矩阵。DMA 通过此总线来执行存储器数据的传入和传出。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB、16 KB) 以及通过 FSMC 的外部存储器。

5. S5: DMA外设总线
此总线用于将 DMA 外设主总线接口连接到总线矩阵。DMA 通过此总线访问 AHB 外设或执 行存储器间的数据传输。此总线访问的对象是 AHB 和 APB 外设以及数据存储器:内部 SRAM 以及通过 FSMC 的外部存储器。

6. S6: 以太网总线
此总线用于将以太网 DMA 主接口连接到总线矩阵。以太网 DMA 通过此总线向存储器存取 数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB)以及通过 FSMC 的外部存储器。

7. S7: USB\OTG\HS\DMA总线
此总线用于将 USB OTG HS DMA 主接口连接到总线矩阵。USB OTG DMA 通过此总线向存储 器加载/存储数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB) 以及通过 FSMC 的外部存储器。


AHB/APB 总线桥:借助两个 AHB/APB 总线桥 APB1 和 APB2,可在 AHB 总线与两个 APB 总线之间实现完全 同步的连接,从而灵活选择外设频率。
总线时钟频率
AHB1/2: 168MHz
APB1: 42MHz
APB2: 84MHz
在这里插入图片描述

F407存储器映射

寻址范围

  1. 32位的单片机有32根地址线,每根地址线有两种状态(导通1/不导通0)
  2. 单片机单片机内存地址访问的存储单元是按字节编址的(而不是bit)
    STM32寻址大小:2^32 = 4G
    STM32寻址范围:0x0000 0000 ~ 0xFFFF FFFF

存储器映射

存储器本身没有地址信息,对存储器分配地址的过程称为存储器映射。
ST将4GB(2^32)地址空间分成8个块,每个块512M

在这里插入图片描述

F407寄存器映射

寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的可控制。给寄存器地址命名的过程,就叫寄存器映射。

STM32寄存器分类

在这里插入图片描述

寄存器描述解读

在这里插入图片描述
①寄存器名字
②偏移量及复位值
偏移量针对外设的基地址
③寄存器位表
④位功能描述

寄存器操作举例

*(unsighed int*)(0x4001 080C) = 0xFFFF;
/* 定义一个名字后再操作 */
#define GPIOA_ODR		*(unsighed int*)(0x4001 080C)
GPIOA_ODR = 0xFFFF;

如何计算寄存器地址
首先将寄存器地址分为三个部分

  1. 总线基地址(BUS_BASE_ADDR)
    在这里插入图片描述

APB1总线基地址也叫做外设基地址(PERIPH_BASE)
2. 外设基于总线基地址的偏移量(PERIPH_OFFSET)
3. 寄存器相对于外设基地址的偏移量(REG_OFFSET)
寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET

使用结构体对寄存器进行映射

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

#define	GPIOA	((GPIO_TypeDef*)GPIOA_BASE)
GPIOA-> ODR = 0xFFFF;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 第7讲 STM32F407系列系统架构及映射 的相关文章

  • c++中从出年月日的字符串提取整形int

    在C 43 43 中字符串有两种 xff0c 不过提取方式类似 xff0c 具体如下 xff1a 一 以 0 结束的字符数组 对于以 0 结束的字符数组 xff0c 可以有如下两种方式 xff1a 1 通过自定义函数提取 由于格式固定 xf
  • STM32与4脚光敏电阻的简单使用——初学

    这是我第一次写CSDN xff0c 排版可能有许多问题 xff0c 描述的可能也有不清楚的地方 xff0c 有问题的小伙伴可以私聊我 xff0c 一起学习共同进步 今天发现了一个很有意思的传感器 光敏传感器 xff0c 它可以判断光线的亮暗
  • STM32与人体红外感应模块的简单使用——入门级

    工作原理 人体有恒定的温度 xff0c 可以发出10UM的红外波 xff0c 而人体红外感应模块就可以探测出这些红外波 xff0c 从而产生电平转换 由此人们可以使用人体红外检测模块来检测是否有人 模块工作环境 工作电压 xff1a 5V至
  • 光敏,红外,人体红外检测模块的模拟输出(ADC)实验——入门

    前面给大家介绍了传感器的开关输出的使用 xff0c 今天给大家介绍一下常见传感器的模拟输出的用法 xff0c 用到了STM32的ADC xff08 模数转换 xff09 模块和USART串口通信模块 代码就是正点原子的ADC实验的代码 今天
  • 直流电机+L298N电机驱动模块

    本次来写一下关于驱动直流电机的知识 xff0c 今天目的是驱动它 xff0c 下次写使用PWM精准的对直流电机进行控速 下面是我使用的直流电机图 xff1a 由于STM32单片机不能直接的输出较大电压和电流 xff0c 所以得借助驱动模块来
  • 操作系统的内存管理——页式、段式管理、段页式管理

    操作系统的内存管理中段式管理与页式管理并不是对立的 xff0c 他们结合起来内存的使用效率会更高 他们都属于离散分配内存的管理方式 xff0c 当然还有连续型内存分配的管理方式 xff0c 连续分配是指为一个用户程序分配连续的内存空间 连续
  • linux内存机制原理---分页、分段底层原理

    自我总结 xff1a 分段 43 分页 43 虚拟内存 61 现代操作系统的内存管理机制 一 linux的内存分布 内核与高速缓冲区占用了前1MB内存 xff0c 后面15MB属于主存 xff0c 可以由用户自由分配 四种地址 xff1a
  • linux进程的内存与ELF文件

    一 linux为每个进程分配的虚拟内存 提到进程的内存就是虚拟内存 1G的内核区域 3G的用户区域 xff0c 提到进程的内存就是下面这个图 xff0c 都可以用它进行分析 虚拟内存是为了实现多任务 xff0c 所以操作系统才引入了它 二
  • YOLO终结者?RT-DETR一探究竟!

    作者 迪迦奥特曼 编辑 极市平台 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 目标检测 技术交流群 导读 实时目标检测中击败YOLO家族 xff1f 来看看百度飞桨的
  • C语言中的位段操作—嵌入式学习(实习篇)

    记录实习期间学到的新的知识 malloc申请内存 xff1a 当申请小内存的时 xff0c malloc使用sbrk分配内存 xff1b 当申请大内存时 xff0c 使用mmap函数申请内存 xff1b 但是这只是分配了虚拟内存 xff0c
  • 运行excel时报错“由于找不到vcruntime140_1.dll,无法继续执行代码”--已解决

    问题描述 xff1a 清除文件时误删microsoft visual c 43 43 2015 microsoft visual c 43 43 2018等文件 xff0c 导致运行excel时报错 由于找不到vcruntime140 1
  • Jetson TX2新手上路全记录(2)

    xff08 2 xff09 查看ubuntub版本 cat proc version 判断ubuntu网络是否连通 xff1a ping www baidu com 数据刷新无异常即连通 破防了 xff0c 前天刷机看来没成功 原因 xff
  • TX2查看cudnn版本 `cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2无反应

    之前cat usr include cudnn h grep CUDNN MAJOR A 2命令可以查看cudnn版本 xff0c 但是之后新版本的版本信息放在了cudnn version h xff0c 我的环境为ubuntu18 04
  • yolo实现交通信号灯视频流识别代码搬运及调试

    yolo实现交通信号灯视频流识别调试过程 所用代码 xff1a 基于YOLOv3的红绿灯检测识别 xff08 Python源码可直接运行 xff09 原作者是tensorflow1 xff0c 我的环境是tensorflow2 xff0c
  • TX2通过yolov4实现交通信号灯视频检测

    所用代码以后上传 环境部署 Jetson TX2刷机及安装的软件包版本如下 xff1a 整个过程中遇到最多的就是不同tf keras版本之间导致的问题 xff0c 所以部署环境的时候千万注意各种包的依赖关系 xff0c 我因为兼容性问题走了
  • TX2 查看内存使用情况

    TX2 查看内存使用情况 不知道为什么无法使用sudo xff5e tegrastats xff0c 报错 command not found 参考NVIDIA TX2 目标检测 查看显卡使用状况 jtop jtop使用指南 NVIDIA
  • Modelsim解决中文注释乱码

    Modelsim中文注释出现乱码 xff0c 解决过程如下 1 菜单栏 Tools Preferences xff0c 点击By name 2 找到source选项 xff0c 下拉选项中双击encoding 3 弹出的对话框中将encod
  • 【资料分享】IMAX-B6AC充电器使用方法

    因为说明书都是英文的嘛 xff0c 所以 xff0c 还是写个充电方法吧 刚打开的时候 xff0c 界面应该是这个样子的 如果很不幸 xff0c 你的不是 xff0c 那么 xff0c 多按几次Stop键 xff0c 直到它是这个界面 菜单
  • GPIO简介

    1 什么是GPIO xff1f GPIO是General Purpose Input Output xff0c 即通用输入输出端口 xff0c 简称GPIO 作用 xff1a 负责采集外部器件的信息或者控制外部器件工作 xff0c 即输入输
  • 多目标跟踪入门:从SORT到FairMOT

    点击下方卡片 xff0c 关注 自动驾驶与AI 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 目标跟踪 技术交流群 后台回复 目标跟踪综述 获取单目标 多目标 基于学习方法的领域综述 xff01 目标跟踪分为单目标

随机推荐

  • STM32的四种开发方式

    STM32的四种开发方式 首先看下ST官方给出的四种开发方式的比较 寄存器开发 寄存器编程对于从51等等芯片过渡过来的小伙伴并不陌生 xff0c 不管你是什么库 xff0c 最终操作的还是寄存器 xff0c 所以对于标准库 HAL库 LL库
  • STM32物联网项目-串口打印

    串口打印 1 用STM32CubeMx配置串口 串口1模式选择异步 xff0c 不开启硬件控制流 波特率 xff1a 115200 数据长度 xff1a 8位 校验位 xff1a 无 停止位 xff1a 1位 使能接收和发送 重复采样 xf
  • STM32使用串口空闲中断(IDLE)和 DMA接收一串数据流

    STM32使用串口空闲中断 xff08 IDLE xff09 和 DMA接收不定长数据 方法一 使用宏定义判断IDLE标志位 空闲的定义是总线上在一个字节的时间内没有再接收到数据 xff0c USART IT IDLE空闲中断是检测到有数据
  • 串口通信printf函数重定向

    串口通信printf函数重定向 printf函数重定向在51单片机的串口通讯也使用过 xff0c 但51重写的时putchar函数 xff0c 这次STM32重写的是fputc函数和fgetc函数 xff0c 至于为什么51和STM32重写
  • GPS NMEA数据包解析

    GPS NMEA数据包解析 NMEA 0183是美国国家海洋电子协会为海用电子设备制定的标准格式 它包含了定位时间 xff0c 纬度 xff0c 经度 xff0c 高度 xff0c 定位所用的卫星数 xff0c DOP值 xff0c 差分状
  • CAN通信

    CAN的通信速率按照电调的手册要求的1Mbps配置 xff0c 71 42854142857473ns xff08 9 43 4 43 1 xff09 61 1000ns 61 1us 61 1Mbps CAN总线的一个数据帧中所需要传输的
  • 网络传输:linux下的网络请求和下载(ping wget curl)、端口

    一 下载和网络请求 1 ping命令 可以通过ping命令 xff0c 检查指定的网络服务器是否可连通状态 语法 xff1a ping c num ip或主机名 选项 xff1a c 检查的次数 xff0c 若不使用 c xff0c 将无限
  • python的 ping 网络状态监测方法(含多IP)

    ping 基本概念 ping xff08 Packet Internet Groper xff09 是一种因特网包探索器 xff0c 用于测试网络连接量的程序 Ping是工作在 TCP IP网络体系结构中应用层的一个服务命令 xff0c 主
  • MS5611气压传感器中文资料

    MS5611是新一代高分辨率气压传感器 xff0c 分辨率可达10cm 其内置24位AD转换器 xff0c 支持IIC和SPI通讯协议 xff0c 传输速率可达20MHz 其转换时间可以设置 测量 工作范围 xff1a 10 1200mba
  • STM32学习——串口数据收发

    STM32学习 串口数据收发 61 61 STM32的串口通信 61 61 61 61 HAL库中串口发送的重要函数 61 61 61 61 STM32定时器实训 61 61 STM32的串口通信 异步串行通信 xff1a 通信双方在没有同
  • 赛目科技2023校园招聘火热进行中!(算法/开发等多个岗位)

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 一 赛目概况 我们是专注于仿真技术自主创新的技术驱动型公司 xff0c 主要从事 ICV 仿真测 试
  • 多模态运动数据采集系统

    为给研究人员提供更多有效的多模态同步数据集 xff0c 合肥工业大学的程景铭团队设计了一个多模态运动数据采集系统 xff0c 采集了包含全身运动多模态数据集 xff0c 并利用已有算法对数据集进行了评估测试 多模态运动数据采集系统 多模态运
  • 【STM32】 STM32 F4 串口通讯

    概念 串口 xff0c 即串行接口 xff0c 是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去 xff0c 同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件 串口通信 xff08 Serial Commu
  • 【安装】安装ros机器人系统和无人机环境配置常见问题总结

    安装ros机器人系统和无人机环境配置常见问题总结 一 安装ROS二 无人机环境配置更多安装 Ubuntu16 04安装ros xff1a http wiki ros org cn kinetic Installation Ubuntu Ub
  • ubuntu18.04搭建python环境

    注意 xff1a 我使用的是虚拟机 xff0c 在操作前请确保虚拟机可以访问到网络 1 安装python3 9 0解释器 xff0c 配置环境变量 2 配置虚拟环境 一 安装python3 9 0 到 opt python39 更新软件源
  • vscode生成的exe文件出现中文乱码的问题

    问题描述 vscode生成的exe文件出现中文乱码的问题 解决方案 xff1a 头文件处添加 xff1a span class token macro property span class token directive hash spa
  • c++进行函数重载时报错:此运算符函数的参数太多C/C++(344)

    问题描述 c 43 43 进行函数重载时报错 xff1a 此运算符函数的参数太多C C 43 43 344 原因分析 xff1a C 43 43 中类内运算符重载时只能有且仅有一个参数 解决方案 xff1a 方案一 xff1a 将重载函数作
  • c++中加入随机种子的方法

    c 43 43 中加入随机种子的方法 提示 xff1a c 43 43 中加入随机种子的方法 解决方案 xff1a span class token macro property span class token directive has
  • STM32 第5讲 MDK下载安装注册及配置

    目录 MDK下载安装注册MDK简介MDK下载MDK安装器件支持包安装注册鸡 MDK配置 MDK下载安装注册 MDK简介 MDK不同版本对比 MDK下载 MDK安装使用 61 MDK软件安装 43 器件支持包安装 MDK软件下载 xff1a
  • STM32 第7讲 STM32F407系列系统架构及映射

    Cortex M内核 amp 芯片 F407系统架构 注 xff1a 64KB CCM 内核耦合存储器 数据 RAM不属于总线矩阵 xff0c 只能存数据 xff0c 不支持DMA xff0c 但访问速度快 总线矩阵 xff1a 总线矩阵用