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

前言

今天总结“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功能的芯片都适用。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,分别为:1.MISO,主机数据输入从机数据输出线(“M”表示主机master,“I”表示输入in,“S”表示从机slaver,“O”表示输出o...

关键字: spi 通信协议 stm32f1

从图中我们可以看出,所有内部设备都是挂载的外设

关键字: stm32f1 位带操作 地址映射 寄存器

Ⅰ、概述该文写针对初学μC/OS的朋友,基于以下平台来一步一步移植μC/OS嵌入式操作系统。UCOS移植相关平台:系统平台:μC/OS-II(最新V2.92版)硬件平台:STM32F1(适合F1所以系列)开发平台:Kei...

关键字: stm32f1 ucos2 移植

前言今天讲解“STM32F103 SysTick系统滴答”,“SysTick系统滴答”是属于Cortex-M3内核的一部分,主要是为运行的操作系统提供滴答时钟,如常见的操作系统:uCOS、RTOS等。不管M3芯片属于哪一...

关键字: stm32f1 systick 系统滴答

Ⅰ、概述上一篇文章是讲述uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底层端口代码的移植(修改)和说明,接着上一篇文章来讲述关于UCOS移植应用部分的代码。该文主要针...

关键字: stm32f1 ucos2 移植

时钟,复位和电源管理:2.0~3.6V电源和IO电压上电复位,掉电复位和可编程的电压监控强大的时钟系统-4~16M的外部高速晶振,笔者学习时使用的原子的Mini版STM32F103RCT6,外部晶振使用的是8MHz-内部...

关键字: stm32f1 最小系统 电路图

前言今天总结“STM32F103 FSMC读写外部SRAM”,主要使用FSMC来控制外部SRAM,对SRAM进行读写的操作。本文章提供的工程对SRAM读写从操作类似于对FLASH读写操作。关于STM32的FSMC(灵活的...

关键字: fsmc stm32f1 读写外部sram

STM32F0与STM32F1的GPIO是不同的,细说比较乱,直接上图。STM32F1的GPIO基本结构:从图上看STM32f1输入只有上下拉,输出有开漏和推挽。STM32F0的GPIO基本结构:从图上看STM32f0输...

关键字: gpio stm32f0 stm32f1

1 大部分端口是能够承受+5V电压的,但是也有一些是不能的。2 具体哪些能够承受+5V电压,要参考相应的数据手册,以STM32F103xC 系列的来看,参考数据手册 这里的FT就表示能承受+5V电压 PS:在今天的实际使...

关键字: i o stm32f1 电压

注意是UART4,不是USART4在stm32中UART和USART是不相同的 USART是通用同步/异步串行接收/发送器 UART是通用异步收发传输器 简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用...

关键字: stm32f1 串口配置 uart4
关闭
关闭