关于C语言AD转换的问题

求问这段代码的解释


```c
#define AD_LEN    200
u16  arry_ph_tip,arry_ph_ad[AD_LEN],arry_average_ph;
void TIM3_IRQHandler(void)
{     
  static u8 tip;
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
    {
         arry_ph_tip=(arry_ph_tip+1)%AD_LEN;
         arry_ph_ad[arry_ph_tip]=vad_get();
         if(arry_ph_tip>=(AD_LEN-1))
         {
            arry_average_ph=vAverage(arry_ph_ad,AD_LEN); 
            vddl_get_ph(((float)arry_average_ph*3250.f/4095.f-1780.0)/2.0);//3260  ad的Vref
         } 
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  
    }        
}

```

#define AD_LEN    200  //AD采样结果的数组最大长度
u16  arry_ph_tip,arry_ph_ad[AD_LEN],arry_average_ph;
void TIM3_IRQHandler(void)//TIM3中断服务函数
{     
  static u8 tip;
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //TIM3发生更新中断
    {
         arry_ph_tip=(arry_ph_tip+1)%AD_LEN;  //arry_ph_tip是采样次数,每次采样+1,范围0~AD_LEN
         arry_ph_ad[arry_ph_tip]=vad_get();  //arry_ph_ad数组的第arry_ph_tip个值存放当前采样结果
         if(arry_ph_tip>=(AD_LEN-1))  //如果采样次数>=AD_LEN-1
         {
            arry_average_ph=vAverage(arry_ph_ad,AD_LEN);   //取所有采样值的平均值
            vddl_get_ph(((float)arry_average_ph*3250.f/4095.f-1780.0)/2.0);//3260  ad的Vref  //根据12bit平均采样值计算电压
         } 
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );    //清除TIM3更新中断标志位
    }