u32 USART1_Baud(void)
{
u16 t1=0,t2,t=0;
u32 b1,b2;
u32 i;
TIMER3_Init();
b1 = GPIO_ReadInputDataBit(GPIOA,10);
for(i=0;i<32;)
{
b2 = GPIO_ReadInputDataBit(GPIOA,10);
if(b2 != b1) //程序一直死在这儿
{
t2 = TIM3->CNT;
b1 = b2;
if((t1 == 0)&&(t==0))
{
t1 = t2;
}
else
{
if(t == 0)
{
t = t2-t1;
}
else
{
if((t2-t1)< t)
{
t = t2-t1;
}
}
t1 = t2;
}
i++;
}
}
TIM_Close(TIM3);
return ((u32)t*403/400);
}
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
LED_Init();
delay_init();
while(1)
{
USART1_Baud();
LED0=!LED0;
delay_ms(100);
}
}
我给PA10发送数据了,但是B1和B2一直相等,产生死循环,求大神们帮忙指点一下! |