FSMC是如何识别是读命令,还是写命令的?

2019-07-20 18:44发布

在使用fsmc控制LCD的是时候有读写操作,如下是画一个点和读一个点

//画点
//x,y:坐标
//POINT_COLOR:此点的颜 {MOD}
void LCD_DrawPoint(u16 x,u16 y)
{
        LCD_SetCursor(x,y);                //设置光标位置
        LCD_WriteRAM_Prepare();        //开始写入GRAM
        LCD->LCD_RAM=POINT_COLOR;
}

//读取个某点的颜 {MOD}值         
//x,y:坐标
//返回值:此点的颜 {MOD}
u16 LCD_ReadPoint(u16 x,u16 y)
{
       ……
        b=LCD_RD_DATA();
        ……               
}
问题:fsmc是如何区分读写操作的?是通过那条语句告诉fsmc我要对LCD进行读或是写操作了?求助,谢谢。

       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
xkwy
2019-07-20 19:55
读写LCD本质上是对寻址空间的某一个地址进行读写操作;

读:var = *(uint32_t *)0x6C000080;
写:*(uint32_t *)0x6C000080 = var;


为了更明显,咱来看看生成的汇编指令:

8.png

因此,如果是读LCD,则使用的一定是LDR指令(Load Register)
写LCD,则使用的是STR指令(Store Register)

不同的指令会对应不同的总线访问时序。

一周热门 更多>