stm8定时器的通道默认比较模式不能关闭吗?

2019-12-09 19:21发布

stm8定时器的通道比较模式不能关闭吗?

具体现象是定时器1的通道2,相关寄存器都是复位值。
在定时器的中断响应里,因为有通道2的中断处理函数,我就发现偶尔程序回近通道2的中断处理

__interrupt void TIM1_CAP_COM_IRQHandler(void)
{
  if(TIM1->SR1&TIM1_IT_CC1)//通道1采样定时
  {
    TIM1->SR1 &= (uint8_t)(~(uint8_t)TIM1_IT_CC1);//清除中断标志位
    TIM1_SetCompare1(TIM1_GetCounter()+1000);//10ms
    SPFlag=1;   
  }
  if(TIM1->SR1&TIM1_IT_CC2)//通道2 每当定时器计数值归0就会进来
  {
    TIM1->SR1 &= (uint8_t)(~(uint8_t)TIM1_IT_CC2);
  }


通道2如果不配置,其实一直在比较模式工作,每当定时器1的计时到0,通道2的中断位就置位(因为通道2的比较值也是0)。

除非把通道2配置成输入模式,不然比较值一匹配就会置位通道2中断标志。

通道2中断在启动别的任务时会用到,所以通道2的中断处理函数一定会有。现在是先配置成输入,用的时候配置成输出。关的时候再配置成输入。
0条回答

一周热门 更多>