extern u8 flag; //????????±ê??
u8 disbuff[4]={0,0,0,0,};
u32 S=0;
void Count()
{
switch(flag)
{
case 0:
{
// POINT_COLOR=BLUE;
// LCD_ShowString(30,170,"OVER");
S=0;
} break;
case 1:
{
S=(u16)(TIM3->CNT*340/20);
// TIM3->CNT=0;
flag=0;
} break;
}
printf("%d\r\n",S); //·?????????????
// printf("%d\r\n",TIM3->CNT);
disbuff[0]=S/1000;
disbuff[1]=S%1000/100;
disbuff[2]=S%1000%100/10;
disbuff[3]=S%1000%10%10;
   OINT_COLOR=BLUE;//?è??×?????????
LCD_ShowNum(142,150,disbuff[0],1,16);
LCD_ShowNum(150,150,disbuff[1],1,16);
LCD_ShowNum(158,150,disbuff[2],1,16);
LCD_ShowNum(166,150,disbuff[3],1,16);
}
void Ultra_Init(void) //???ù?¨???é??????
{
RCC->APB2ENR|=1<<4; //????PORTC?±??
//PC4(TRIG)???ì????
GPIOC->CRL&=0XFFF0FFFF;
GPIOC->CRL|=0X00030000;//PC4 ?¨?????ì????????50MHz
//PC5(ECHO)????????
GPIOC->CRL&=0XFF0FFFFF;
GPIOC->CRL|=0X00800000;//PC5 ????????????10 ????????[00]
GPIOC->ODR&=~(1<<5); //PC5????
Ex_NVIC_Config(GPIO_C,5,RTIR); //????????·?
MY_NVIC_Init(2,1,EXTI9_5_IRQChannel,2); ////????2???ì????????1??×é2
}
void EXTI9_5_IRQHandler(void)
{
TIM3->CNT=0;
TIM3->CR1|=0x01; //?????¨?±?÷3
LED0=0;
while(ECHO_RX);
// if(ECHO_RX==0)
TIM3->CR1&=0xfffe; //??±??¨?±?÷3
LED0=1;
flag=1;
Count();
delay_ms(200);
EXTI->  R=1<<5; //??????????5????????±ê????
}
void Start_Ultra(void)//???????ù?¨???é
{
TRIG_TX=1;
delay_us(25);
TRIG_TX=0;
// delay_us(500);
}
u8 flag;
int main(void)
{
Stm32_Clock_Init(9); //?????±???è??
delay_init(72); //???±??????
uart_init(72,9600); //??????????
LED_Init();
LCD_Init();
Timerx_Init(60000,7199);
Ultra_Init(); //???ù?¨???é??????
POINT_COLOR=RED;//?è??×??????ì??
// LCD_ShowString(86,50,"^_^");
// LCD_ShowString(70,70,"i love u");
// LCD_ShowString(70,90,"Jing Jinhu");
//?????á??????
POINT_COLOR=BLUE;//?è??×?????????
LCD_ShowString(70,150,"Distance:0000mm");
while(1)
{
printf("???ù?¨???à");
Start_Ultra();
// while(ECHO_RX==0); //?±ECHO_RX?????±????
// TIM3->CR1|=0x01; //?????¨?±?÷3 //????????
// TIM3->CNT=0;
// Count();
// while(ECHO_RX==1); //?±ECHO_RX??1??????????
// TIM3->CR1&=0xfffe; //??±??¨?±?÷3
// Count(); //????
// delay_ms(1000);
}
|