打印
[STM32F1]

stm32外部计数,溢出中断只能进入一次

[复制链接]
1717|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
woshic23|  楼主 | 2016-2-29 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用stm32的ETR功能对外部脉冲计数,达到设定值时产生溢出中断,但只能进入中断一次,后面就无法进入,但外部脉冲数达到设定值时同样会清0.初始化如下,请有经验的朋友帮忙看一下

TIM_DeInit(TIM1);
    TIM_TimeBaseStructure.TIM_Period = 500;
    TIM_TimeBaseStructure.TIM_Prescaler =0;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;//TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit( TIM1, &TIM_TimeBaseStructure );
    TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

    TIM_SetCounter(TIM1, 0);
    TIM_ClearFlag( TIM1, TIM_FLAG_Update );
    TIM_ITConfig( TIM1,TIM_IT_Update,ENABLE );//TIM_ITConfig( TIM1,TIM_IT_Update|TIM_IT_CC1,ENABLE );
    TIM_Cmd( TIM1,ENABLE );   

void TIM1_UP_IRQHandler(void)
{
    //TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
    TIM_ClearFlag( TIM1, TIM_FLAG_Update );
#ifdef      __debug
        printf("tim1 cnt:%d  arr:%d\r\n",TIM1->CNT,TIM1->ARR);
#endif   
}
沙发
woshic23|  楼主 | 2016-2-29 17:40 | 只看该作者
stm32手册看了半天,让人摸不着头脑,说的乱七八糟的,看惯了NXP和TI的数据手册,感觉st的真是相差甚远

使用特权

评论回复
板凳
woshic23|  楼主 | 2016-2-29 18:08 | 只看该作者
解决了少了一个初始化TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

使用特权

评论回复
地板
airwill| | 2016-2-29 18:50 | 只看该作者
呵呵, 这是个溢出率分频的寄存器. 不说出来, 还不容易想到它
支持一下楼主, 自己找到原因了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

108

帖子

1

粉丝