story_xjj 发表于 2014-4-4 14:55:57

RE:stm32定时器问题

你应该配置NVIC啊,在开启定时器:D

fengye5340 发表于 2014-4-4 20:24:53

RE:stm32定时器问题

main()
{
    NVIC_config();
    Init_TIMER3();
    ADC_INT();
    ADCflag=0;
    TIM_Cmd(TIM3, ENABLE);
    while(1)
    {
   if(ADCflag)
   {   TIM_Cmd(TIM3,DISABLE);
         ADC_GetConversionValue(ADC1);   
         if(AD_Value>AD_Value)array_Ia=AD_Value-AD_Value;
         else   array_Ia=AD_Value-AD_Value;
         
         TIM_Cmd(TIM3, ENABLE);
      }
   }

}
void TIM3_IRQHandler(void)//定时器3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   //
{
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);      //
   ADCflag=1;
   }
}   
我帮楼主改了一下架构,你试试,上电启动定时器,0.5S中断后,开启ADC采集,采集完毕重新启动定时器

wkuang 发表于 2014-4-6 23:44:05

RE:stm32定时器问题

需要修改中断配置;
1、使能中断;
2、把中断函数与向量表映射起来;
3、把需要设置的时钟都使能

kingg209 发表于 2014-4-10 07:18:00

回复:stm32定时器问题

谢谢啊,可是这样一个循环只检测一次,而不是一个周期的啊。另外,实在0.5s之后执行,而不是0.5s之内执行的啊。
我是想在一个0.5s周期内检测,然后取均方根计算有效值。
回复第 12 楼 于2014-04-04 20:24:53发表:
main()
{
NVIC_config();
Init_TIMER3();
ADC_INT();
ADCflag=0;
TIM_Cmd(TIM3, ENABLE);
while(1)
{
if(ADCflag)
{   TIM_Cmd(TIM3,DISABLE);
ADC_GetConversionValue(ADC1);   
if(AD_Value>AD_Value)array_Ia=AD_Value-AD_Value;
else   array_Ia=AD_Value-AD_Value;

TIM_Cmd(TIM3, ENABLE);
}
}

}
void TIM3_IRQHandler(void)//定时器3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   //
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);      //
ADCflag=1;
}
}   
我帮楼主改了一下架构,你试试,上电启动定时器,0.5S中断后,开启ADC采集,采集完毕重新启动定时器
 

kingg209 发表于 2014-4-10 07:19:27

回复:stm32定时器问题

回复第 8 楼 于2014-04-03 14:43:12发表:
你把void Current_detect(void)函数中
ADCflag=1;
放在TIM_Cmd(TIM3, DISABLE); 后试试看
 
谢谢,还是不行。
 

feiante-155820 发表于 2014-4-19 23:37:24

RE:stm32定时器问题

NVIC设置了吗?在主程序中有没有调用NVIC的初始化?

dzc2001 发表于 2014-4-20 15:39:21

回复:stm32定时器问题

还是发整个工程上来看看吧,中断应该没执行吧
页: 1 [2]
查看完整版本: stm32定时器问题