初级会员

- 积分
- 85
- 金钱
- 85
- 注册时间
- 2012-6-13
- 在线时间
- 0 小时
|
我把device code =0x4535的例程放进去,LCD能正确显示,比如显示背景颜色,这说明整个硬件是没有问题的
而ID始终无法正确读出。非常头大
void write_dat(uint x) //先写寄存器,再写16位数据
{
LCD_CS=0;
LCD_RS=1;
LCD_WR=1;
GPIOB->ODR=x;
LCD_WR=0;
LCD_WR=1;
LCD_CS=1;
}//
read_reg(uchar x)
{
write_reg(x);
GPIOB->CRL=0X88888888;//设置PB0~PB7为输入模式
GPIOB->CRH=0X88888888;//设置PB8~PB15为输入模式
GPIOB->ODR=0XFFFF;//设置为上拉
LCD_RS=1;
LCD_CS=0;
LCD_RD=0;
LCD_RD=1;
dat_dat=GPIOB->IDR;
LCD_CS=1;
GPIOB->CRL=0X33333333;//设置PB0~PB7为通用推挽输出模式
GPIOB->CRH=0X33333333;//设置PB8~PB15为通用推挽输出模式
GPIOB->ODR=0XFFFF;//设置为输出
return dat_dat;
}
main()
{
Stm32_Clock_Init(9);
delay_init(72);
RCC->APB2ENR|=1<<3;//使能PORT B时钟
RCC->APB2ENR|=1<<4;//使能PORT C时钟
RCC->APB2ENR|=1<<0; //开启辅助时钟
JTAG_Set(SWD_ENABLE); //开启SWD
GPIOB->CRL&=0X00FFFFFF;//设置PB0~PB7为通用推挽输出模式
GPIOB->CRL|=0X33000000;
GPIOB->CRH&=0XFFFFF000;//设置PB8~PB15为通用推挽输出模式
GPIOB->CRH|=0X00000333;
GPIOB->ODR=0XFFFF;//设置为输出高
GPIOC->CRL&=0X00FFFFFF;//设置PC6~PC7为通用推挽输出模式
GPIOC->CRL|=0X33000000;
GPIOC->CRH&=0XFFFFF000;//设置PC8~PC10为通用推挽输出模式
GPIOC->CRH|=0X00000333;
GPIOC->ODR=0XFFFF;//设置为输出高
delay_ms(50); // delay 50 ms
write_reg_dat(0x0000,0x0001); //晶振振荡
delay_ms(50);//等候20ms
device_code=read_reg(0x0000); //read code
delay_us(1);
现在读出的ID是0X0000
我接JTAG做硬件调试,将PB口的每个端子都分别接3.3V实验,都能准确读出,为什么单单读ID的时候不行,程序已经改得跟例程一样了啊?哪位能指点一下?
|
|