Page 281 - MDP2022-2
P. 281

/*                       Private                      user                      code
                  ---------------------------------------------------------*/
                  /*  USER  CODE  BEGIN  0  */
                  void  delay  (uint16_t  time)
                  {
                        __HAL_TIM_SET_COUNTER(&htim3,  0);
                        while  (__HAL_TIM_GET_COUNTER  (&htim3)  <  time);
                  }


                  void  HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef  *htim)
                  {
                        if  (htim->Channel  ==  HAL_TIM_ACTIVE_CHANNEL_1)
                        {
                              if  (Is_First_Captured==0)
                              {
                                    IC_Val1  =  HAL_TIM_ReadCapturedValue(htim,  TIM_CHANNEL_1);
                                    Is_First_Captured  =  1;

                                    __HAL_TIM_SET_CAPTUREPOLARITY(htim,               TIM_CHANNEL_1,
                  TIM_INPUTCHANNELPOLARITY_FALLING);
                              }


                              else  if  (Is_First_Captured==1)
                              {
                                    IC_Val2  =  HAL_TIM_ReadCapturedValue(htim,  TIM_CHANNEL_1);
                                    __HAL_TIM_SET_COUNTER(htim,  0);


                                    if  (IC_Val2  >  IC_Val1)
                                    {
                                          Difference  =  IC_Val2-IC_Val1;
                                    }


                                    else  if  (IC_Val1  >  IC_Val2)
                                    {
                                          Difference  =  (0xffff  -  IC_Val1)  +  IC_Val2;
                                    }


                                    Distance  =  Difference  *  .034/2;
                                    Is_First_Captured  =  0;
   276   277   278   279   280   281   282   283   284   285   286