OpenEdv-开源电子网

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

请教原子哥

[复制链接]

23

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-3-15
在线时间
13 小时
发表于 2012-5-15 18:26:50 | 显示全部楼层 |阅读模式
使用原子哥的fsmc寄存器驱动LCD程序,我的RS接在了A0(PF0)其他都和程序里的接法一样,下面红色部分是我修改的部分,现在出现了比较奇怪的现象,就是我把A0弄成推免复位输出就读不到ID,设成其他状态就可以得到ID9320,还请大侠帮帮我分析下,
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 BANK 4,地址位HADDR[27,26]=11 A10作为数据命令区分线 
//注意设置时STM32内部会右移一位对其! 111110=0X3E    
#define LCD_BASE        ((u32)(0x6C000000 | 0x0C000002))
#define LCD             ((LCD_TypeDef *) LCD_BASE)
--------------------------------------------------------------------------------------------------------
void LCD_Init(void)
{  
RCC->AHBENR|=1<<8;       //使能FSMC时钟  
  RCC->APB2ENR|=1<<3;      //使能PORTB时钟
RCC->APB2ENR|=1<<5;      //使能PORTD时钟
RCC->APB2ENR|=1<<6;      //使能PORTE时钟
RCC->APB2ENR|=1<<7;      //使能PORTE时钟
  RCC->APB2ENR|=1<<8;      //使能PORTG时钟
RCC->APB2ENR|=1<<0;      //使能AFIO时钟  
GPIOG->CRL&=0XFFFF0FFF;//PG3 推挽输出 背光
GPIOG->CRL|=0X00003000;   
//PORTD复用推挽输出
GPIOD->CRH&=0X00FFF000;
GPIOD->CRH|=0XBB000BBB; 
GPIOD->CRL&=0XFF00FF00;
GPIOD->CRL|=0X00BB00BB;    
//PORTE复用推挽输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0XBBBBBBBB; 
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0XB0000000;
//PORTF复用推挽输出

GPIOF->CRL&=0XFFFFFFF0;
GPIOF->CRL|=0X0000000B; //如果去掉就可以得到ID:9320        
//PORTG12复用推挽输出 A0      
GPIOG->CRH&=0XFFF0FFFF;
GPIOG->CRH|=0X000B0000; 
GPIOG->ODR |= 1 << 3;         //PE0输出高

-------------------------------------------------------------------------------------------------------
u16 a;
int main(void)
{  
  Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);
uart_init(72,9600);          
    LCD_Init();    
LCD_ShowString(0,0,"START INITing...");     
  while(1)//初始化ov7670
{
a = LCD_ReadReg(0x0000);
printf(" LCD ID:%x\n",   a ); //打印LCD ID  
LCD_ShowString(0,0,"TEST OK");
delay_ms(511);  
LCD_ShowString(0,0,"       ");
};

}
----------------------------------------------------------------------------------------------------------------

注销掉GPIOF->CRL&=0XFFFFFFF0;
GPIOF->CRL|=0X0000000B;
得到的数据





没有注销掉得到的数据






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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-15 20:31:18 | 显示全部楼层
我看代码页没啥问题哦...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

23

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-3-15
在线时间
13 小时
 楼主| 发表于 2012-5-16 17:36:51 | 显示全部楼层
回复【2楼】正点原子:
我看代码页没啥问题哦...
---------------------------------
现在#define LCD_BASE  ((u32)(0x6C000000 | 0x0C000000))能读到ID9320,#define LCD_BASE  ((u32)(0x6C000000 | 0x0C000000))读到的ID为0,但是用前面的能读到ID的宏定义还是不能显示出数据,现在液晶屏还是白屏,不知道问题出在哪,好郁闷这是按照你的程序移植的初始化
void LCD_Init(void)
u16 DeviceCode;  
RCC->AHBENR|=1<<8;       //使能FSMC时钟
RCC->APB2ENR|=1<<0;      //使能AFIO时钟  
  RCC->APB2ENR|=1<<3;      //使能PORTB时钟
RCC->APB2ENR|=1<<5;      //使能PORTD时钟
RCC->APB2ENR|=1<<6;      //使能PORTE时钟
RCC->APB2ENR|=1<<7;      //使能PORTE时钟
  RCC->APB2ENR|=1<<8;      //使能PORTG时钟
  
//PORTD复用推挽输出
GPIOD->CRH&=0X00FFF000;
GPIOD->CRH|=0XBB000BBB; 
GPIOD->CRL&=0XFF00FF00;
GPIOD->CRL|=0X00BB00BB;    
//PORTE复用推挽输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0XBBBBBBBB; 
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0XB0000000;
//PORTF复用推挽输出 A0
GPIOF->CRL&=0XFFFFFFF0;
GPIOF->CRL|=0X0000000B; 
       
//PORTG12复用推挽输出 
GPIOG->CRL&=0XFFFF0FFF;//PG3 推挽输出 背光
GPIOG->CRL|=0X00003000;      
GPIOG->CRH&=0XFFF0FFFF;
GPIOG->CRH|=0X000B0000; 
  
//寄存器清零
//bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
//这里我们使用NE4 ,也就对应BTCR[6],[7]。    
FSMC_Bank1->BTCR[6]=0X00000000;
FSMC_Bank1->BTCR[7]=0X00000000;
FSMC_Bank1E->BWTR[6]=0X00000000;
//操作BCR寄存器 使用异步模式
FSMC_Bank1->BTCR[6]|=1<<12;//存储器写使能
FSMC_Bank1->BTCR[6]|=1<<4; //存储器数据宽度为16bit    
//操作BTR寄存器    
FSMC_Bank1->BTCR[7]|=1<<11; //数据保存时间为3个HCLK  
//闪存写时序寄存器  
FSMC_Bank1E->BWTR[6]=0x0FFFFFFF;//默认值
//使能BANK4(PC卡设备)
FSMC_Bank1->BTCR[6]|=1<<0;
   
Delay(5); // delay 50 ms 
LCD_WriteReg(0x0000,0x0001);
Delay(5); // delay 50 ms 
DeviceCode = LCD_ReadReg(0x0000);   
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-4-19
在线时间
0 小时
发表于 2014-4-25 19:57:50 | 显示全部楼层
程序分步走就好用  整体运行就不行是怎么回事
回复 支持 反对

使用道具 举报

10

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-3-23
在线时间
6 小时
发表于 2015-5-21 15:36:42 | 显示全部楼层
回复【4楼】oo大海oo咸鱼:
---------------------------------
a0没有用的   1到25   不能选0
走向未来
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 05:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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