STM32F1_外部SRAM作为运行内存

发布者:TranquilGaze最新更新时间:2017-09-15 来源: eefocus关键字:STM32F1  外部SRAM  运行内存 手机看文章 扫描二维码
随时随地手机看文章

前言

今天总结“STM32F103  外部SRAM作为运行内存”。对于运行内存应该都知道它的意思,主要是程序运行时所使用的RAM,比如我们定义的全局变量、局部变量这些在程序运行时都会在RAM中为它们开辟一片空间,用于运行时所使用。

今天提供的工程是基于前面“TIM延时”的工程修改而来,但是今天的例子是使用ST官方提供的标准库里面“system_stm32f10x.c”文件里面现成的函数接口(使用寄存器配置),使其控制外部SRAM作为运行内存。昨天的工程使用标准库fsmc相应的函数接口来配置的FSMC,昨天工程的目的就是为了使其大家熟悉参数信息。因此,今天单独再提供一个工程”FSMC读写外部SRAM_官方配置”(就是用寄存器配置的版本),请自行下载查看和测试,效果和昨天一样只是配置FSMC的方式不同。

如何知道运行内存是使用的内部RAM还是外部RAM呢?测试方法很简单,就是定义一些全局变量或者局部变量,读出其地址就知道了。因此今天提供的例程就是使用这种方法来测试的。

 

下载

今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,官方配置工程是和昨天做对比(FSMC配置方式不一样)。

 

今天的软件工程下载地址(360云盘):

FSMC读写外部SRAM_官方配置:

https://yunpan.cn/cSq3WajiZIcx8  访问密码 30c0

 

外部SRAM作为运行内存:

https://yunpan.cn/cSq3n5iBTHuDc  访问密码 4102

 

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2   访问密码 ca90

 

内容讲解

工程概要说明: 例程定义了一个全局BUF和一个局部BUF,通过对俩BUF赋值,再打印数值和对应其地址,这样就可以检测运行内存的地址。

 

提供的工程以简单为原则,详细中文注释,方便自己方便大家。

 

关于“STM32F103  外部SRAM作为运行内存” 我把重要的几点在下面分别讲述:

一、配置启动文件

我们使用官方标准库,拷贝标准库FSMC例程里面的“startup_stm32f10x_hd.s”文件(工程使用103ZE,若使用互联型芯片拷贝对应文件),替换掉我们之前工程的启动文件,如下图:


 

二、配置FSMC

我们使用官方标准库里面“system_stm32f10x.c”文件里面现成的函数接口(使用寄存器配置)来配置FSMC,只需要打开“system_stm32f10x.c”文件里面第122行的宏“DATA_IN_ExtSRAM”,见下图:


 

三、分配RAM

RAM地址的分配是由编译器完成的,因此需要对工程进行相应配置,就是使用外部RAM,见下图:


 

四、测试函数说明

 

该函数位于main.c文件下面;

这个函数主要就是对上面配置及整改工程的测试。定义一个全局变量和一个局部变量,通过串口打印出他们的地址就可以判断运行内存是使用外部还是内部。

 

五、打印(测试)结果


看了测试函数就知道依次打印出来的数据是什么,这里我们很明显的可以看到打印出的地址是0x6800xxxx,这里的0x6800xxxx地址数据就是外部SRAM地址(不懂的话,请看昨天的讲解),说明运行内存确实是外部SRAM.

 

五、今天的重点

A.实际开发中请尽量使用官方标准库里面“system_stm32f10x.c”文件里面现成的函数接口(使用寄存器配置)来配置FSMC,这样效率高一下。或者,如果你喜欢STM32CubeMX配置的代码风格也可以使用哪一种,关于STM32CubeMX的使用方法其实很简单,网上也有一些使用教程,或者后期我会增加一片关于STM32CubeMX的文章。

 

说明

今天提供的软件工程基于STM32F103大容量芯片,中等及小容量芯片没有FSMC功能,自然也不能使用。其实只要适当修改工程的部分配置,STM32F1有FSCM功能的芯片都适用。


关键字:STM32F1  外部SRAM  运行内存 引用地址:STM32F1_外部SRAM作为运行内存

上一篇:STM32F1_FSMC读写外部SRAM
下一篇:STM32F1_外部NorFlash存储程序代码

推荐阅读最新更新时间:2024-03-16 15:37

STM32 外部 SRAM
STM32F103ZET6 自带了 64K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合,STM32 自带的这些内存就不够用了。比如跑算法或者跑 GUI 等,就可能不太够用 IS62WV51216 简介 IS62WV51216 是 ISSI(Integrated Silicon Solution, Inc)公司生产的一颗 16 位宽 512K(512*16,即 1M 字节)容量的 CMOS 静态内存芯片。该芯片具有如下几个特点: l 高速。具有 45ns/55ns 访问速度。 l 低功耗。 l TTL 电平兼容。 l 全静态操作。不需要刷新和时钟电路。 l 三态输出。 l 字节控制功能。支
[单片机]
红米4参数曝光:3GB运行内存+指纹识别
   小米最近可是出尽了风头,小米Note 2和小米MIX让小米的名声直接传到了世界各地,尤其是小米MIX,外国网友们也纷纷表达了对这款手机的深深热爱。不过除了高端机,别忘了红米家族,最近天翼网站上曝光了红米4的照片以及详细参数。     红米4拥有一块5英寸1080P的屏幕,3GB运存+32GB存储,搭配前置500万+后置1300万像素摄像头,搭载骁龙625处理器,有灰色、金色和银色可选。红米系列一直走的是薄利多销的策略,不过近年来面对竞争对手的疯狂追赶也显得力不从心,红米4的推出是否有望给红米家族注入一针强心剂呢?
[手机便携]
STM32F1系列的DEBUG调试功能需要配置吗?
1写在前面 STM32CubeMX的好处相信大部分朋友都知道,那就是帮你快速生成初始化代码工程。 虽然方便了开发,但也给一些初学者,或者不怎么懂底层的朋友带来了不少困扰。 特别是使用该工具生成代码,出现问题的时候,如果你不懂一些底层的知识,可能你会很头疼。 本文关于DEBUG配置的问题,针对初学者,我也把前因后果简单说一下。 2起因 STM32CubeMX配置STM32F1系列MCU时,第一次能下载成功,但第二次,会出现如下错误: 这是什么错误? 没有连接到目标,也就是你的下载器(ST-LInk)是正常的,只是没有识别到你MCU。 这里推荐阅读专栏文章: ST-Link资料 3分析原因
[单片机]
<font color='red'>STM32F1</font>系列的DEBUG调试功能需要配置吗?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved