F4疑问:地址映射后对应的寄存器是怎么做到赋值的

2019-07-20 21:34发布

本帖最后由 xuande 于 2016-6-24 15:22 编辑

平时8位MUC,汇编中一目了然在ram区定义变量,比如  data1   EQU    0x8fh,然后就可以对这个变量进操作,STM32中明白地址映射这回事,但不懂怎么操作的, 比如FSMC功能这块,当要驱动外部LCD时,列程用了相关地址映射 #define LCD_BASE        ((u32)(0x6C000000 | 0x000007E)) //这个地址是0x6c00007e  ,#define LCD             ((LCD_TypeDef *) LCD_BASE)  这两个地址映射,后面又定义了一个LCD地址结构体typedef struct
{
        vu16 LCD_REG;                 
        vu16 LCD_RAM;                                                                        
} LCD_TypeDef;   //这个结构里面的两个对应地址偏移4 分别是  0x6c000083,0x6c000087吗?   这两个地址表示什么功能的寄存器?,最后在调用函数赋值的时候
void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)  //        
{        
        LCD->LCD_REG = LCD_Reg;               
        LCD->LCD_RAM = LCD_RegValue;                  
}        

LCD_WriteReg(0x0000,0x0001);   
那么问题来了,这样一来0x0000,0x0001是不是否分别写到 0x6c000083,0x6c000087所对应的寄存器里面了吗?这个不清楚,还请哪位版友仔细解答一下,非常感谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zorroyl
2019-07-20 22:23
xuande 发表于 2016-6-24 15:38
没错,是写到这两个“寄存器”了。
硬件上有安排,
这两个寄存器都位于LCD里面。

可否详细点了,不明白0x6c000083,0x6c000087这两个地址为什么是这么多(我把LCD驱动IC资料上传),是否上面的地址为STM32里面的存储空间地址,C为二进制0011表示是FSMC的地址范围第四区域,后面的数字83可以取其他的值吗,还是内部原理和驱动机制没明白

一周热门 更多>