基于keil的stm32内部外部SARM的访问

**1.**概述
对于一个单片机来说访问内部sram很容易,直接定义变量就可以了,当把外部sram考虑进来的时候,就需要考虑内部和外部的问题;比如,如何定义一个变量定位再内部获取外部sram;定未内部是如何访问,定位外部又是如何访问。这里说的是一个变量,当设计一个数组,一个文件,多个文件其内部的变量的定位问题就复杂很多了。
**2.**变量定位定义的一般方法(attribute
一般定位的方法如下图
在这里插入图片描述
使用keill生成map文件
在这里插入图片描述
查看map文件中对于变量的地址:
在这里插入图片描述
这样就实现了变量定义的功能。当内部ram不足或者有意的把一个变量定义到外部sram中就可以采用这样的方法。
**3.**批量定义变量到外部SRAM
3.1 如何实现批量的定义变量到外部sram,除了批量的使用__attribute__定义变量,还有更便捷的方式。
在这里插入图片描述如上如所示,最左边的defalut千万不要打勾,开始地址由原理图地址线决定,size的大小必须如实填写(可以小于但是绝对不能大于实际的大小),我的是1M的字节
3.2 如何让一个文件内部定义的所有变量定位到外部SRAM
首先确认你要定位的文件,接下来按下图步骤来
工程窗口选择文件
在这里插入图片描述

右键点击选择第一行,

在这里插入图片描述
关注memory assignment,设置即可。
到此处,main.c文件内部的所有变量均已定位到外部sram中,
再在map文件中查看文件中的变量是否定义到了外部sram
在这里插入图片描述
在这里插入图片描述
PrintDataBuff为其他文件使用__attribute__定义的变量,dd[100]为main.c 没有使用__attribute__但是也是定义到了外部sram中。
3.3多个文件的变量定位到外部sram
重复一个文件定位到外部sram即可。
**4.**变量定义到外部sram如何访问
4.1 一般访问sram的方法
首先使用FSMC_SRAM_Init();之后使用下面两个函数读写外部sramFSMC_SRAM_WriteBuffer FSMC_SRAM_ReadBuffer
4.2 编译器搞定法
如第三节的变量定义方法,变量的访问就由编译器自己搞定了(这一点还没有实际的硬件验证-这里仅是推测,至于还要使用如4.1的方法是不可思意的),变量的读写就和内部sram一样了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值