本帖最后由 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位垃圾单片机程序,感觉好乱。
求原子哥或哪位大神帮忙理理!
@正点原子 。
你没理解我在6楼的回复。
我给你打一个比喻你就明白了。
STM32片内是有RAM的,好比是有一栋大楼,大楼叫A栋,平时我们定义变量时都是在这个大楼里,比如让小明去A栋302开了个房。然后给变量赋值时就相当于快递员吧快递送给A栋302的小明。
这里我们定义了一个变量,强制定义在0X6C0007FE这个地址,这个地址不在片内的范围里,就相当于A楼住满了,我们另外建了一个B楼,我们就让新的变量小王去住B楼7FE房,然后又给这个变量赋值,就相当于快递员一看地址是B楼7FE于是就很自然地送去了B楼,对于单片机来说就是操作外挂的这个LCD了。
不知道这个比喻是否形象。
一周热门 更多>