初始化程序如下
void timer_Init(void)
{
TIM2_DeInit();
TIM2_TimeBaseInit( TIM2_PRESCALER_16 , 999 );
/* Enable the Interrupt Upmode sources */
TIM2->IER |= 0x01 ;
TIM2-> CR1 |= BIT(0) ;//计数器使能
}
处理程序如下
#pragma vector = TIM2_Updata_vector
__interrupt void TIM2_Updata_IRQHandler(void) //中断频率 1K
{
if(!( TIM2->SR1 & (BIT(0)) ) ) //这里比较奇怪,每次计数会有两次进中断的过程,不加上就不对头了
return ;
TIM2->SR1 &=~BIT(0);//清标志位
rim();//开总中断
}
不理解STM8S003为什么会有一个定时发送中断,但是要进两次中断的问题,定时器标志我看只有一次置位,有一次定时器更新标志进来的时候就是0,通过逻辑是解决了问题
|