下图为例程中关于FSMC中Bank1第四区地址映像的定义,利用了结构体成员地址自增的原理,使LCD->LCD_REG的地址为0x6C00007E,使LCD->LCD_RAM的地址为0x6C000080。
[mw_shl_code=c,true]typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
#define LCD_BASE ((u32)(0x6C000000 | 0x0000007E))
#define LCD ((LCD_TypeDef *) LCD_BASE)[/mw_shl_code]
按本质而言,如果直接指定映像地址,同样也是能够驱动FSMC的
[mw_shl_code=c,true]#define LCD_REG (*(vu32*)0x6C00007E)
#define LCD_RAM (*(vu32*)0x6C000080)[/mw_shl_code]
但是这样做就会出现问题,例如在读ID的时候在发出指令后读第二个数据读到的不是0而是0x41,再读也是0x41。是否我对FSMC的理解有问题,求解。??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>