void Tim2_Init(void)
{
#if 0
TIM2_TimeBaseInit( TIM2_PRESCALER_16 ,999);
TIM2_PrescalerConfig(TIM2_PRESCALER_16,TIM2_PSCRELOADMODE_IMMEDIATE);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
TIM2_Cmd(ENABLE);
#else
TIM2_DeInit();
/* Time base configuration */
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 0x0010);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR); //中断源选择为只有溢出才能触发
TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE); //产生更新事件,不触发中断(这就是我的解决方法,此处即更新了预分频器)
TIM2->SR1 &= 0xFE; //清除中断,按常理应该没用
TIM2->IER |= 0X01; //使能TIMER
TIM2_Cmd(ENABLE); //开始TIM2
#endif
}
这样配置都不进入中断实在没办法,后发现TIM2_CNTRH TIM2_CNTRL会随着TIM2_ARRH TIM2_ARRL改变,就是不超过这个值,说明设置起作用了,但不中断想到了全局中断,百度一下找到了全局中断 asm(“sim”); // 关全局中断 asm(“rim”); // 开全局中断
所以搞定了