现在在做交流电压ADC采集,计算真有效值,想实现一个周期(20ms)内采集128个点,然后通过这128个点进行有效值计算。遇到的问题:如何控制STM32定时器在20ms内准时中断128次?主程序中的代码:
for(i=0;i<3;i++) {
// adcx=Get_Adc_Average(ADC_CH1,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096);
//LCD_ShowxNum(156,170,temp,4,16,0);
adcx=temp;
// LCD_ShowxNum(156,170,temp,4,16,0);
LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
LCD_ShowxNum(172,170,num,3,16,0X80);
LCD_ShowxNum(172,190,mmm,3,16,0X80);
中断子程序:
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
adcx=Get_Adc_Average(ADC_CH1,10);
num++;
//LED1=!LED1;
}
TIM3->SR&=~(1<<0);//清除中断标志位
mmm++;
// return adcx;
}
主程序中设想中断4次(i 计数),但是在中断子函数中,用num和mmm计数中断次数,最后显示:num=14和mmm=15。
请高人指点错在和处?并给出解决方案,小弟在此感谢!!!
|