OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4911|回复: 1

STM32开发过程遇到的问题求解(LCD、字库、FSMC等)

[复制链接]

27

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
329
金钱
329
注册时间
2013-5-12
在线时间
26 小时
发表于 2013-10-5 19:56:56 | 显示全部楼层 |阅读模式
一、LCD
1.使用过程中串口2波特率设定为115200时LCD无显示,设定为9600时有显示,设定为115200同时将PD6强制拉低有显示,但LCD没有用到PD6,程序其他模块也没有用到PD6

    2.LCD刷新速度有点低

二、字库
现在使用的板子没有外部FLASH,自己制作的码表显示汉字,一次只显示1个字,有没有好的方法可以一条指令显示多个字啊

三、FSMC
void LCD_FSMC_Init(void)         //LCD FSMC初始化
{

  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  WriteTiming;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

  WriteTiming.FSMC_AddressSetupTime = 0x02;                                                 //地址建立时间
  WriteTiming.FSMC_AddressHoldTime = 0x00;                                                 //地址保持时间
  WriteTiming.FSMC_DataSetupTime = 0x05;                                                 //数据建立时间
  WriteTiming.FSMC_BusTurnAroundDuration = 0x00;                                            //总线恢复时间
  WriteTiming.FSMC_CLKDivision = 0x00;                                                      //时钟分频
  WriteTiming.FSMC_DataLatency = 0x00;                                                      //数据保持时间
  WriteTiming.FSMC_AccessMode = FSMC_AccessMode_B;                                          //在地址\数据线不复用的情况下,ABCD模式的区别不大

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;                                //NOR FLASH的BANK1
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;              //数据与地址总线不复用
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;                          //存储器类型NOR FLASH
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;                //数据宽度为16位
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;            //使用异步写模式,禁止突发模式
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;          //只在突发模式下有效,等待信号极性为低
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;                          //禁止非对齐性突发模式
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  //仅在突发模式下有效,NWAIT信号在什么周期产生
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;               //写使能
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;                      //仅在突发模式下有效,禁用NWAIT信号
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;                  //禁止扩展模式,扩展模式可以使用独立的读、写模式
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;                      //禁止突发写操作
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &WriteTiming;                  //配置读写时序
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &WriteTiming;                         //配置写时序 

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);            //初始化FSMC配置
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);                                             //使能FSMC Bank1_SRAM Bank
   
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-5 21:52:33 | 显示全部楼层
你的波特率影响LCD,表示很奇怪,硬件你自己做的么?检查硬件有没问题。
LCD显示汉字慢,你字库放在单片机里面,显示汉字比放外部flash更快的哦...所以,应该使你代码设计的问题。
你说的一次只能显示一个汉字,和一次显示多个汉字,我不是很明白。
我的开发板,汉字显示都是一个个字显示的,显示一个短语,无非就是多个汉字组合在一起,一个个显示而已。
没什么指令,可以一次显示多个汉字的哇...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-11 20:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表