独闷闷网

 找回密码
 立即注册
搜索
查看: 3424|回复: 0
收起左侧

[原创] STM32串口初始化和FSMC驱动LCD初始化的诡异现象

[复制链接]
发表于 2014-1-20 13:41:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先初始化LCD的FSMC,再初始化串口,则正常。
如果先初始化串口,再初始化FSMC,则出现以下三种诡异现象:
第一种:先调用串口初始化函数来初始化串口,再初始化FSMC,液晶屏不工作。例如:
int main(void)
{

  USART_Config();    //先调用串口初始化函数来初始化串口
  lcd_initialize();   // 再LCD初始化
  while(1)
  {
     ;
  }

}       
void USART_Config(void )    //先初始化串口
{
... //省去若干内容
USART_InitStructure.USART_BaudRate              = 115200;
...
USART_Init(USART3, &USART_InitStructure);
}
//来自电子开发者论坛
第二种:不调用串口初始化函数,直接在main()函数里写串口初始化的代码,再初始化FSMC,液晶屏却能正常工作。例如:
int main(void)
{

... //省去若干内容
USART_InitStructure.USART_BaudRate              = 115200;
...
USART_Init(USART3, &USART_InitStructure); //直接在main()函数里写串口初始化的代码

  lcd_initialize();   // 再LCD初始化
  while(1)
  {
     ;
  }

}       


第三种:把原来void的串口初始化函数增加一个形参接口,来初始化串口,再初始化FSMC,液晶屏能工作,但是刷屏速度明显下降。例如:
int main(void)
{

  USART_Config(115200);    //先调用带形参的串口初始化函数来初始化串口
  lcd_initialize();   // 再LCD初始化
  while(1)
  {
     ;
  }

}       
void USART_Config(unsigned long baudrate_d )    //先初始化串口
{
... //省去若干内容
USART_InitStructure.USART_BaudRate              = baudrate_d;
...
USART_Init(USART3, &USART_InitStructure);
}

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-6-14 01:24 , Processed in 0.135855 second(s), 19 queries .

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