求问这段代码的解释
```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更新中断标志位
}