long g_temp;
unsigned char Read(unsigned char address)
{
unsigned char cmd = 0x05;
unsigned char data = 0;
unsigned i = 0;
long temp = 0x00;
for(i = 0;i<8;i++)
{
if( (cmd & 0x80) == 0x80 )
{
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_5 , GPIO_PIN_5);
}
else
{
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_5 , ~GPIO_PIN_5);
}
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , ~GPIO_PIN_2);
cmd = (cmd<<1);
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , GPIO_PIN_2);
}
// delay(10);
for(i=0;i<8;i++)
{
if( (address & 0x80) == 0x80)
{
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_5 ,GPIO_PIN_5);
}
else
{
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_5 , ~GPIO_PIN_5);
}
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , ~GPIO_PIN_2 );
address = (address<<1);
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , GPIO_PIN_2 );
}
// delay(10);
for(i=0;i<8;i++)
{
data = (data << 1);
//g_temp = (GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_6));
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , ~GPIO_PIN_2 );
if(GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_6))
{
data |= 0x01;
}
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , GPIO_PIN_2 );
}
delay(1);
GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_3 , GPIO_PIN_3);
return data;
}
示波器上能测试出外设寄存器已经将相应的值给出,但是使用GPIOPinRead()怎么都不能读到值,只能读到一个默认的值(0x10, 使用的是GPIOA) |