OpenEdv-开源电子网

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

移植 原子哥的LCD例程,程序一直停在LCD_WriteReg(0x0000,0x0001),请大家帮忙解惑,谢谢

[复制链接]

5

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2013-2-19
在线时间
28 小时
发表于 2014-6-5 22:37:05 | 显示全部楼层 |阅读模式
5金钱
各位,求助一下,我用原子的LCD例程移植到自己做的板子上,LCD_RS接 PD11 (FSMC_A16),LCD_CS接PD7(FSMC_NE1),其他都和原子哥的一样,但是运行后一直程序卡在LCD_WriteReg(0x0000,0x0001);查看代码这里没有while 语句,就不知道为什么只停在这里,搞了好久了,一直没搞好,请各位朋友帮忙解惑下~~谢谢
[mw_shl_code=c,true]void LCD_Init(void) { RCC->AHBENR|=1<<8; //使能FSMC时钟 RCC->APB2ENR|=1<<3; //使能PORTB时钟 RCC->APB2ENR|=1<<5; //使能PORTD时钟 RCC->APB2ENR|=1<<6; //使能PORTE时钟 GPIOD->CRL&=0XFFFFF0FF; //PD2 推挽输出 背光 GPIOD->CRL|=0X00000300; ///////////////////////////////////////////////////////////////////////// //PORTD复用推挽输出 GPIOD->CRH&=0X00FF0000; //PD11->LCD_RS (FSMC_A16) GPIOD->CRH|=0XBB00BBBB; GPIOD->CRL&=0X0F00FF00; GPIOD->CRL|=0XB0BB00BB; //PD7->LCD_CS (FSMC_NE1) //涉及FSMC的都改为复用开漏输出 /////////////////////////////////////////////////////////////////////////// //PORTE复用推挽输出 //PORTE复用推挽输出 GPIOE->CRH&=0X00000000; GPIOE->CRH|=0XBBBBBBBB; GPIOE->CRL&=0X0FFFFFFF; GPIOE->CRL|=0XB0000000; //涉及FSMC的都改为复用开漏输出 ////////////////////////////////////////////////////////////////////////////////// //寄存器清零 //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。 //这里我们使用NE1 ,也就对应BTCR[0],[1]。 FSMC_Bank1->BTCR[0]=0X00000000; FSMC_Bank1->BTCR[1]=0X00000000; FSMC_Bank1E->BWTR[0]=0X00000000; //操作BCR寄存器 使用异步模式 FSMC_Bank1->BTCR[0]|=1<<12; //存储器写使能 FSMC_Bank1->BTCR[0]|=1<<4; //存储器数据宽度为16bit //操作BTR寄存器 //读时序控制寄存器 FSMC_Bank1->BTCR[1]|=0<<28; //模式A FSMC_Bank1->BTCR[1]|=1<<0; //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns //因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。 FSMC_Bank1->BTCR[1]|=0XF<<8; //数据保存时间为16个HCLK //写时序控制寄存器 FSMC_Bank1E->BWTR[0]|=0<<28; //模式A FSMC_Bank1E->BWTR[0]|=0<<0; //地址建立时间(ADDSET)为1个HCLK //4个HCLK(HCLK=72M)因为液晶驱动IC的写信号脉宽,最少也得50ns。72M/4=24M=55ns FSMC_Bank1E->BWTR[0]|=3<<8; //数据保存时间为4个HCLK //使能BANK1,区域4 FSMC_Bank1->BTCR[0]|=1<<0; //使能BANK1,区域1 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// delay_ms(500); // delay 50 ms LCD_WriteReg(0x0000,0x0001); //程序就一直卡在这里不动,查看了硬件,暂没有发现问题 delay_ms(50); // delay 50 ms lcddev.id = LCD_ReadReg(0x0000); [/mw_shl_code]



书山有路勤为径,学海无涯苦作舟!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-6 00:17:53 | 显示全部楼层
仿真跟踪下, 程序死在哪里了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
发表于 2014-6-6 00:50:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
怎么复制代码才会这样子显示 为什么复制的都是黑白的?而且注释显示不出来
我是一只摔不死的蚂蚁!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-6 01:00:55 | 显示全部楼层
 回复【3楼】 _tank_ :
---------------------------------
论坛编辑框里面有控件。


我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-7-10
在线时间
5 小时
发表于 2015-7-10 20:35:09 | 显示全部楼层
我也卡死在这里,写的程序被卡在LCD_Int里面出不来。。求指教
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2015-3-30
在线时间
2 小时
发表于 2015-7-12 20:35:03 | 显示全部楼层

我最近也遇到这个问题,怎么也查不出是什么原因。最后使用KEIL的第三级优化编译后终于可以跳出来了,你可以试试。不知道是FSMC的一个BUG还是KEIL的一个BUG。

回复

使用道具 举报

15

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-12-9
在线时间
33 小时
发表于 2017-12-16 02:27:12 | 显示全部楼层
rocky_ra 发表于 2015-7-12 20:35
我最近也遇到这个问题,怎么也查不出是什么原因。最后使用KEIL的第三级优化编译后终于可以跳出来了,你 ...

Mark!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 06:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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