|
stm32 I/O 问题 求教哟。设置如下:
//PA5.6为输出
#define DS1302_CLK PAout(5)//输出
#define DS1302_SDA PAout(6)//PA6双向IO口
#define DS1302_READ_SDA PAin(6)//PA6为输入
//PA6双向IO口方向设置
#define DS1302_OUT() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=3<<7;}
#define DS1302_IN() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=8<<7;}
RCC->APB2ENR|=1<<2;//先使能外设PORTA时钟
RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟
//PORTA5/6复用推挽输出
GPIOA->CRL&=0XF00FFFFF;
GPIOA->CRL|=0X03300000;
GPIOA->ODR|=3<<5;
只进行如下运行:(BIN 数据无论是什么)
void DS_Shift_In(u8 bIn)
{
u8 i;
for( i=0;i<8;i++ )
{
DS1302_CLK = 0; //时钟低
delay_us(t);
if( bIn&0x01 ) DS1302_SDA = 1;//送数1
else DS1302_SDA = 0; //否则送数0
bIn = bIn>>1; //寄存器右移一位
DS1302_CLK = 1; //时钟置1
delay_us(t);
}
}
输出波形如下:图中上面是DS1302_SDA线输出的, 下面是DS1302_SCL线输出的 。
现在读不出DS1302的数据,请问设置问题出在那呀? |