由FSMC想到的一点疑问,我知道肯定是我单片机基础没学好,空中楼阁了,特来请教。

2019-08-17 00:49发布

本帖最后由 oyixi001 于 2017-3-29 23:13 编辑

我一直都是跟着开发边学边用,所以单片机基础学的差了点吧,都是建立在能用就行的基础上。玩儿STM32也有一两年了,用原子哥的板子很顺手啊。
最近比较闲开始琢磨一些基础性的问题,可能很傻哈。

我理解的,这个FSMC就是把定义在寻址范围内的变量在读或写的时候同样的通过IO的时序把数据写到对应的器件里去,可以是外挂的SRAM、LCD啥的。
比如,原子哥用的lcd  定义WR_REG 0X000007FE; WR_data 0x00000800; 当对这两个地址的变量进行读或写时就会相应地操作FSMC。

然后我就很奇怪,这个变量被强制定义在这个地址,这个地址是什么呢?
我想:1、直接对应片内的RAM某个word? 2、还是直接对应片内的FLASH某个word?3、或者是片内的RAM的一个word然后被强制赋予了一个0x000007fe的地址?
如果是1、2、感觉不可能,毕竟片内RAM没有这么多空间啦。感觉可能是3吧,或者都不对。
还是那句话,单片机原理学的差,东西一多就搅合了,再加上平时还做点汇编的8位垃圾单片机程序,感觉好乱。
求原子哥或哪位大神帮忙理理!@正点原子  。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
oyixi001
2019-08-17 14:32
aozima 发表于 2017-3-29 23:32
定义成 0 就没那么绕了

关于STM32F103偏移地址问题

这个东西我能明白,也都能正常用fsmc。
我只是没明白一点,我们把某一个变量地址强制定义为bank1.4的某个寻址地址,然后这个变量肯定是存在RAM里的嘛,如果这个变量是定义的全局变量,这个RAM就不够用好么,毕竟bank1.4的寻址范围比片内RAM大好多,主要我就是纠结这个。
如果每一个FSMC的寻址地址都需要对应一个变量的地址,RAM不是完全不够用么?还是说C语言编译时处理了RAM资源。

一周热门 更多>