| 
 
| 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一直相等,产生死循环,求大神们帮忙指点一下!
 | 
 |