主系统由以下部分构成:
1.四个驱动单元:
Cortex-M3内核,DCode总线和系统总线(S-Bus),通用DMA1和通用DMA2
2四个被动单元
内部SRAM,内部闪存存储器,FSMC,AHB到APB的桥,它链接所有的APB设备。
程序存储器,数据存储器,寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。数据字节以小端格式存放在存储器中。
可访问的存储器空间被分成8个主要块,每一个块为512M。
STM32F10XX内置64K字节的静态SRAM,它可以以字节,半字,或字访问。
SRAM的起始地址是0x2000000
Cortex-M3存储器映像包括两个位段区。这两个位段区将别外存储区中的每个字映射到位段存储器区的一个位,在别名存储区写入一个具有对位段区的目标位执行读-改-写操作的相同效果。
闪存的指令和数据访问是通过AHB总线完成的。预取模块是用于通过ICODE总线读取指令的。仲裁是作用在闪存接口,并且DCODE总线上的数据访问优先。
闪存编程一次可以写入16位。
闪存擦除操作可以按页面擦除或完全擦除。全擦除不影响信息块。
启动配置:
STM32F10XX里,可以通过BOOT[1:0]引脚选择三种不同启动模式。
在启动延时之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。
因为固定的存储器映像,代码区始终从地址0x0000 0000开始,而数据区(SRAM)始终从地址0x2000 0000开始。
BOOT1一般接地。
根据选 定的启动模式,主闪存存储器,系统存储器或SRAM可以按揭晓以下方式访问:
1 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但能够 在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000
2 从系统存储器启动:系统存储器被映射到启动空间,但能够在它原有的地址(0x1fff f000)访问。
3 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM.
STM32的工作电压为2.0~3.6V
关键字:STM32 存储器 总线构架
引用地址:
STM32学习 存储器和总线构架
推荐阅读最新更新时间:2024-03-16 14:30
STM32学习之路-MDK4.7(JLINk问题)+VIM
主机环境:win7 开发板:STM32F103VE 问题一:MDK4.7a对部分用户的JLINK(当然是山寨版的)存在问题.. 问题描述: 当setting的时候会出现问题,它会叫你升级你的JLINK,这对于我们用山寨版的JLINK用户来说是不可能的,一旦升级就玩完了 所以不能升级。不过有些用户就没有出现这样的问题,不知道是什么回事,连软件都会鄙视人,没法活了.. 解决方案: (1)购买正版的JLINK,然后升级(貌似是废话) (2)下载JLinkARM_V440(我以前的是V410版本的),将改安装目录下的JLinkARM.dll 文件 替换掉keil安装目录下的ARMSegger下的JLin
[单片机]
如何理解STM32引脚中的GPIO,AFIO时钟分配策略和管脚复用
适用COTEX-M3系列的MCU也有两三年的时间了,一直用的是ST的产品,由于开发紧张,时间紧迫,整个过程不求甚解,只要东西能够做出来,也就不关心到底是怎么回事。最近刚好有点时间,在整理之前的软件设计时发现了一些疑惑: 使用过STM32系列产品的开发人员都知道,在该款芯片上凡是要使用某一个功能,必须给该功能分配相应的时钟,如何来分配这个时钟资源就成了一个问题:举个具体的例子,以STM32F103X8为例,假设需要使用PA9进行串口正常输出,时钟应该如何配置??数据手册管脚定义如下: 参考给出的时钟分配策略是这样: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Per
[单片机]
使用STM32ADC看门狗测量出待测信号
我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。 STM32 ADC基本上都支持模拟看门狗功能,即ADC模块对被检测的模拟通道的转换结果基于硬件对其合法性、安全性进行监测。我们可以设置被监测通道的转换结果合法性检查的上下阈值,若结果处于阈值之外则视为异常,并可以触发中断。 尤其有些场合,我们可能使用到数个ADC通道,8个、10个甚至更多,同时程序还需要基于各通道的转换结果进行合法性或安全性监测,此时使用ADC模拟看门狗功能就很方便。我们可以先让模拟看门狗做第一步把关,只有出现异常数据时才去进一步检查确认。
[单片机]
边缘运算将成主流 仍面临运算能耗、存储器频宽等挑战
由于传感器将产生太多数据,难以都传到云端处理,因此 边缘运算 正在成为主流趋势。下面就随网络通信小编一起来了解一下相关内容吧。 根据Semiconductor Engineering报导,物联网(IoT)设备的最初构想是,简单的传感器会将原始数据传送到云端,透过1个或多个闸道器进行处理。这些闸道器可能位于公司、住宅、工厂,甚至连网车内。但日益明显的是要处理的数据太多,这种方法实不可行。 三星电子(Samsung Electronics)负责HBM行销的Tien Shiah表示,1台PC每天将产生90MB的数据。1辆自驾车每天产生4TB,连网飞机则为50TB。其中大部分为无用数据。 预处理若在本地完成,则仅需在云端
[网络通信]
STM32学习笔记:【001】时钟树与RCC
导言 如果学过单片机的同学应该不会陌生,学习51单片机时最经常听到的就是“最小系统”。 最小系统里面少不了晶振,否则单片机无法工作。 单片机需要晶振(时钟源)来工作,那么对于STM32芯片同样如此。 此外,同一个电路,时钟越快功耗越大,抗电磁干扰能力也随之变弱。 所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。 STM32的时钟树与时钟源 时钟源 在STM32F4中,有5个最重要的时钟源,按来源分为内外部两种;按速率也可以分为高低速两种。 时钟源 含义 时钟速率 用途 HSI 高速内部时钟 16MHz 可以直接作为系统时钟或者PLL输入 HSE 高速外部时钟 4~26MHz 可以直接作为系统时钟 L
[单片机]
STM32的USART分析
串口框图 工程建立后,需要在工程中添加stm32f10x_usart.h和stm32f10x_usart.c文件; 串口设置的一般步骤 ①串口时钟使能,GPIO时钟使能 ②串口复位 ③GPIO端口模式设置 ④串口参数初始化 ⑤开启中断并初始化NVIC(需要开启中断时开启) ⑥使能串口 ⑦编写中断处理函数 串口设置的相关函数以及解释 1.串口使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTx,ENABLE); 2.串口复位 解释一下复位:当外设出现异常的时候通过复位设置实现该外设的复位,然后重新设置这个外设达到让其重新工作的目的。一般在系统刚开始的时候,都会执行复位该外设的操作
[单片机]
STM32-USMART学习笔记
USMART移植步骤: 1.将usmart组件添加到工程文件夹下,在选项和组管理即 中,配置好头文件路径和组文件。 2.usmart.c主要包含两个函数void usmart_init(u8 sysclk)和void usmart_scan(void),第一个函数里有个条件编译#if USMART_ENTIM2_SCAN==1,这个在usmart.h里设置。这个宏定义初始化定时器2,本实验在定时器2的中断处理函数中执行usmart_dev.scan();进行行usmart扫描,为了便于移植,中断初始化及处理函数写在了usamrt.c里,time.c里面的初始化和终端处理被注释掉了。 3.特别注意:这个组件使用串口发送调试函数,u
[单片机]
一种基于功耗管理的DSP处理器设计
在信息日益成为一种重要资源的今天,强大的市场需求和微电子技术的发展促成了便携式电子系统的飞速发展。这些便携式电子设备,不但对速度和面积要求非常高,而且对系统的平均功耗要求也很严格,使功耗问题日渐成为制约便携式电子设备发展的瓶颈。要获得高性能低功耗的方案,其实质也就是在处理速度、芯片面积和功耗上来权衡如何满足数字信号处理系统的要求。 本文介绍了一种基于并行流水线的低功耗数字信号处理器(DSP)的系统设计,以改善通用处理器的不足,应用于各种便携式系统中,以便取得良好的效果。 系统方案中,基于流水线的结构从行为级方面降低了系统的功耗;时钟管理方案则可以允许系统在不同的工作模式下使用不同的工作频
[嵌入式]