RE:stm32定时器问题
你应该配置NVIC啊,在开启定时器:DRE: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采集,采集完毕重新启动定时器
RE:stm32定时器问题
需要修改中断配置;1、使能中断;
2、把中断函数与向量表映射起来;
3、把需要设置的时钟都使能
回复: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采集,采集完毕重新启动定时器
回复:stm32定时器问题
回复第 8 楼 于2014-04-03 14:43:12发表:你把void Current_detect(void)函数中
ADCflag=1;
放在TIM_Cmd(TIM3, DISABLE); 后试试看
谢谢,还是不行。
RE:stm32定时器问题
NVIC设置了吗?在主程序中有没有调用NVIC的初始化?回复:stm32定时器问题
还是发整个工程上来看看吧,中断应该没执行吧
页:
1
[2]