TIM3_Int_Init(4,71);中断频率设定
void TIM3_IRQHandler(void) //TIM3ÖD¶Ï
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //¼ì2éÖ¸¶¨μÄTIMÖD¶Ï·¢éúóë·ñ:TIM ÖD¶ÏÔ′
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
vol=ADC_ConvertedValue[0];
volp=ADC_ConvertedValue[1];
flag=1;
}
}中断
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_1Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_1Cycles5); ADC设定
while(1)
{
if(flag==1)
{
if(adccount<200)
{
dacval +=vol;
dacval1 +=volp;
adccount++;
}
else
{
DisplayCurve1(dacval1,dacval);
adccount=0;
dacval=0;
dacval1=0;
}
flag=0;
}
} 主函数
波特率为115200
我设定TIM3_Int_Init(4,71)时,中断频率为200k,理论上采样率也应该为200k,那我采样10s通过串口应该可以得到每组10000个数据点,然而实际上确实每路大概为5000个数据点。当我把TIM3_Int_Init(4,35)时,每路数据量通过串口查看没有什么变化大概为5000个,而当我把TIM3_Int_Init(4,143)时,每路数据大概下降一半为2500个点,我的ADC转换时间为14/12M=1.167us,双路ADC那也占用2.3us,而TIM3_Int_Init(4,35)时中断溢出时间为2.5us,TIM3_Int_Init(4,71)时中断溢出时间为5us,TIM3_Int_Init(4,143)时中断溢出时间为10us,时间应该是完全足够的啊,有人遇到过这种情况吗?实在是不知道问题出现在哪里了。
此帖出自
小平头技术问答
一周热门 更多>