|
int main(void)
{
uint8 i;
Stm32_Clock_Init(); // 时钟初始化
delay_init(); // 延时初始化
LCD_init(); // 初始化液晶
gui_init(); // 初始化界面
while(1)
{
for(i=1;i<ADDR_MAX+1;i++)
{
reflash_cursor(i); // 刷新界面
//delay_ms(10);
}
} // end while(1)
}
说明一下,共23组数据 reflash_cursor( ); 就是刷新游标,刷新游标大致就是:把界面还原(直接画线或画点,没有读取液晶数据),然后画新的游标,现在测试过程中,数据一直保持不变(也就是游标位置不变)。
现在问题来了 初始化界面也调用过 reflash_cursor( ); 界面很正常,但是进入循环不停刷新游标时,必须延时10ms才再次调用该函数,否则就出现如图圆圈所示的情况。如果没有延时,设置断点执行会恢复正常,但是全速运行又会出问题。
液晶驱动IC是 ILI9486 但觉得跟液晶本身或者驱动时序没有关系,否则界面初始化时已经出问题,不需要等到循环执行。
FSMC参数配置
//操作BCR寄存器 使用异步模式
FSMC_Bank1->BTCR[0]|=1<<12; //存储器写使能
FSMC_Bank1->BTCR[0]|=1<<14; //读写使用不同的时序
FSMC_Bank1->BTCR[0]|=1<<4; //存储器数据宽度为16bit
//操作BTR寄存器
//读时序控制寄存器
FSMC_Bank1->BTCR[1]|=0<<28; //模式A
FSMC_Bank1->BTCR[1]|=15<<0; //15<<0; 地址建立时间(ADDSET)为15个HCLK 1/168M=6ns*15=90ns
FSMC_Bank1->BTCR[1]|=60<<8; //60<<8; 数据保存时间(DATAST)为60个HCLK =6*60=360ns
//写时序控制寄存器
FSMC_Bank1E->BWTR[0]|=0<<28; //模式A
FSMC_Bank1E->BWTR[0]|=4<<0; //9<<0; 地址建立时间(ADDSET)为9个HCLK=54ns 某些IC写信号脉宽最少50ns。
FSMC_Bank1E->BWTR[0]|=3<<8; //8<<8; 数据保存时间(DATAST)为6ns*9个HCLK=54ns
//使能BANK1,区域4
FSMC_Bank1->BTCR[0]|=1<<0; //使能BANK1,区域4
大家遇过类似问题没有,一般是哪方面问题。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|