打印

STM32控制控制液晶读数据(难以理解的IO寄存器设置问题)

[复制链接]
3730|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用正点原子的STM32开发板(这个不是重点)调节TFT液晶,程序语句要是修改为一下带色彩的几句语句,液晶就可以显示。直接用库函数液晶就无法显示,个人感觉特别奇怪,不知是什么原因,望高手解答~
uint16_t LCD_ReadReg(u8 LCD_Reg)
{                                                                                  
    uint16_t readdata;
    LCD_WR_REG(LCD_Reg);   //写入要读的寄存器号  

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = LCD_GPIO_DATA_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;    // 上拉输入
    //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LCD_GPIO_DATA_PORT, &GPIO_InitStructure);
   
    Write_Data(0x0000);
    Set_Rs;
    Clr_Cs;
    //读取数据(读寄存器时,并不需要读2次)
    Clr_nRd;                                          
    Set_nRd;
   
    readdata = GPIO_ReadInputData(GPIOB);   //这句有问题         

    //assert_param(IS_GPIO_ALL_PERIPH(GPIOB));
    //readdata = ((uint16_t)GPIOB->IDR);              //这句可以
   
    //readdata = GPIOB->IDR;   //数据输入             //这句可以
   
    Set_Cs;   

    GPIO_InitStructure.GPIO_Pin = LCD_GPIO_DATA_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LCD_GPIO_DATA_PORT, &GPIO_InitStructure);
    Write_Data(0xffff);
    return readdata;  
}
沙发
499734424|  楼主 | 2012-5-1 11:46 | 只看该作者
貌似代码不可以转换颜色
再重复一遍:

使用库函数:
readdata = GPIO_ReadInputData(GPIOB);   //这句有问题
液晶不 正常工作(不显示)

使用如下语句
//assert_param(IS_GPIO_ALL_PERIPH(GPIOB));
//readdata = ((uint16_t)GPIOB->IDR);              //这句可以
液晶工作正常

使用如下语句   
//readdata = GPIOB->IDR;   //数据输入             //这句可以
液晶也工作正常。

因为我都是用库函数学习STM32的,如果按照上面修改,就达不到用库的目的。

使用特权

评论回复
板凳
joing1999| | 2012-5-2 16:55 | 只看该作者
LZ上传完整程序吧

使用特权

评论回复
地板
IJK| | 2012-5-2 17:21 | 只看该作者
建议结合 示波器来检查问题。

使用特权

评论回复
5
499734424|  楼主 | 2012-5-2 20:02 | 只看该作者
3# joing1999
上传整个程序,真的谁有时间去一行一行的验证哦
:)
而且程序就是 ALIENTEK MINISTM32 实验10 TFTLCD显示实验(库)
找到函数 u16 LCD_ReadReg(u8 LCD_Reg)
就可以看到。

注:为了看程序时更加形象我将t修改为readdata其他没有改动,(程序本就是原子的成果,我自己修改的就不上传了,直接看原子的程序即可)而且程序也说了,调用库是有问题的。如图


ALIENTEK MINISTM32 实验10 TFTLCD显示实验(库).rar (328.81 KB)

使用特权

评论回复
6
499734424|  楼主 | 2012-7-14 17:03 | 只看该作者
问题解决
今天无聊又调节了一下此语句发现优化等价选择中级、高级都能够使用
主要还是需要IAR配置优化(common subexpression elimination),否则显示有问题

使用特权

评论回复
7
amwrdfe| | 2012-7-14 19:07 | 只看该作者
不会直接调用iar的库吧。建议从官方下载一个下来用。
貌似iar的优化开到最大是有问题的。把某些循环都省略掉了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

粉丝