OpenEdv-开源电子网

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

读ID只能读出两位是什么原因?

[复制链接]

38

主题

165

帖子

0

精华

高级会员

Rank: 4

积分
646
金钱
646
注册时间
2014-3-5
在线时间
67 小时
发表于 2014-6-1 13:11:00 | 显示全部楼层 |阅读模式
5金钱


main.c


#include <stm32f10x_lib.h>
#include "sys.h"
#include "tft1.h"

// 硬件连接:
// lcd_bl -> PC10
// lcd_cs -> PC9
// lcd_rs -> PC8
// lcd_wr -> PC7
// lcd_rd -> PC6

// lcd_data -> PB0-15

void lcd_init(void)
{
RCC->APB2ENR|=1<<3;  //使能GPIOB时钟
RCC->APB2ENR|=1<<4;  //使能GPIOC时钟
RCC->APB2ENR|=1<<0;  //使能辅助时钟

JTAG_Set(SWD_ENABLE);   //使能SWD,关闭JTAG
  
GPIOC->CRH&=0XFFFFF000; //PORTC6~10  推挽输出
GPIOC->CRH|=0X00000333; 
GPIOC->CRL&=0X00FFFFFF;
GPIOC->CRL|=0X33000000;  
GPIOC->ODR|=0X07C0;   
  
GPIOB->CRH=0X33333333; //PORTB 推挽输出
GPIOB->CRL=0X33333333;   
GPIOB->ODR=0XFFFF;
}

//说明:数据是16位的,寄存器是八位

void lcd_write_reg(u8 data)
{
lcd_rs=0;  //写地址
lcd_cs=0;  //使能tft
lcd_data(data);
lcd_wr=0;  //拉低写数据
lcd_wr=1;  //上升沿把数据送到TFT
lcd_cs=1;  //关闭TFT
}

void lcd_write_data(u16 data)
{
lcd_rs=1;  //写数据
lcd_cs=0;  //使能tft
lcd_data(data);
lcd_wr=0;  //拉低写数据
lcd_wr=1;  //上升沿把数据送到TFT
lcd_cs=1;  //关闭TFT
}

void lcd_writereg (u8 lcd_reg,u16 reg_Value)  //写寄存器地址和写寄存器值
{
lcd_write_reg(lcd_reg);
lcd_write_data(reg_Value);
}

u16 lcd_readdata(void)
{
u16 read_data;

GPIOB->CRL=0X88888888;  //PB0-7  上拉输入
GPIOB->CRH=0X88888888;  //PB8-15 上拉输入
GPIOB->ODR=0XFFFF;      //全部输出高

lcd_rs=1;
lcd_cs=0;
//读取数据(读寄存器时,并不需要读2次)
lcd_rd=0;    
lcd_rd=1;
read_data=lcd_data_in;  
lcd_cs=1; 
 
GPIOB->CRL=0X33333333; //PB0-7  上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF;    //全部输出高
return read_data;
}

u16 lcd_readreg(u8 lcd_reg)
{
u16 readdata;

lcd_write_reg(lcd_reg);

readdata=lcd_readdata();

return readdata;

}


tft.c


#include <stm32f10x_lib.h>
#include "sys.h"
#include "tft1.h"

// 硬件连接:
// lcd_bl -> PC10
// lcd_cs -> PC9
// lcd_rs -> PC8
// lcd_wr -> PC7
// lcd_rd -> PC6

// lcd_data -> PB0-15

void lcd_init(void)
{
RCC->APB2ENR|=1<<3;  //使能GPIOB时钟
RCC->APB2ENR|=1<<4;  //使能GPIOC时钟
RCC->APB2ENR|=1<<0;  //使能辅助时钟

JTAG_Set(SWD_ENABLE);   //使能SWD,关闭JTAG
  
GPIOC->CRH&=0XFFFFF000; //PORTC6~10  推挽输出
GPIOC->CRH|=0X00000333; 
GPIOC->CRL&=0X00FFFFFF;
GPIOC->CRL|=0X33000000;  
GPIOC->ODR|=0X07C0;   
  
GPIOB->CRH=0X33333333; //PORTB 推挽输出
GPIOB->CRL=0X33333333;   
GPIOB->ODR=0XFFFF;
}

//说明:数据是16位的,寄存器是八位

void lcd_write_reg(u8 data)
{
lcd_rs=0;  //写地址
lcd_cs=0;  //使能tft
lcd_data(data);
lcd_wr=0;  //拉低写数据
lcd_wr=1;  //上升沿把数据送到TFT
lcd_cs=1;  //关闭TFT
}

void lcd_write_data(u16 data)
{
lcd_rs=1;  //写数据
lcd_cs=0;  //使能tft
lcd_data(data);
lcd_wr=0;  //拉低写数据
lcd_wr=1;  //上升沿把数据送到TFT
lcd_cs=1;  //关闭TFT
}

void lcd_writereg (u8 lcd_reg,u16 reg_Value)  //写寄存器地址和写寄存器值
{
lcd_write_reg(lcd_reg);
lcd_write_data(reg_Value);
}

u16 lcd_readdata(void)
{
u16 read_data;

GPIOB->CRL=0X88888888;  //PB0-7  上拉输入
GPIOB->CRH=0X88888888;  //PB8-15 上拉输入
GPIOB->ODR=0XFFFF;      //全部输出高

lcd_rs=1;
lcd_cs=0;
//读取数据(读寄存器时,并不需要读2次)
lcd_rd=0;    
lcd_rd=1;
read_data=lcd_data_in;  
lcd_cs=1; 
 
GPIOB->CRL=0X33333333; //PB0-7  上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF;    //全部输出高
return read_data;
}

u16 lcd_readreg(u8 lcd_reg)
{
u16 readdata;

lcd_write_reg(lcd_reg);

readdata=lcd_readdata();

return readdata;

}


tft.h


#ifndef __TFT_H
#define __TFT_H

#include <stm32f10x_lib.h>
#include "sys.h"

// 硬件连接:
// lcd_bl -> PC10
// lcd_cs -> PC9
// lcd_rs -> PC8
// lcd_wr -> PC7
// lcd_rd -> PC6

// lcd_data -> PB0-15

//#define lcd_bl PCout(10)
#define lcd_cs PCout(9)
#define lcd_rs PCout(8)
#define lcd_wr PCout(7)
#define lcd_rd PCout(6)


#define lcd_data(x) GPIOB->ODR=x
#define lcd_data_in GPIOB->IDR

void lcd_init(void);
void lcd_write_reg(u8 data);
void lcd_write_data(u16 data);
void lcd_writereg (u8 lcd_reg,u16 reg_Value);  //写寄存器地址和写寄存器值
u16 lcd_readdata(void);
u16 lcd_readreg(u8 lcd_reg);

#endif


读出来的ID只有两位数  




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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-1 15:36:29 | 显示全部楼层
参考下我们迷你3.0开发板的代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 15:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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