STM32L0:暂停定时器?

时间:2016-08-11 13:53:15

标签: stm32

我正在使用Nucleo STM32L031。在我的应用程序中,我想使用Timer和Compare Value生成中断。 我的问题是:我想启动计时器,然后暂停它(所以计数器值暂停,但不能重置),然后再次启动计时器(从暂停值)。然后当它达到比较值时,它会产生一个中断。

如何在不重置计数器值的情况下暂停计时器? 而且我也不确定: HAL_TIM_BASE_Stop_IT()函数是否会暂停或重置计数器值?

感谢。 边

1 个答案:

答案 0 :(得分:2)

至少有两种方式:

第一个在CR1寄存器中置位/复位CEN位,当定时器暂停时,可以重新配置并使用它(但我不能说通过HAL函数重新配置)

htimX.Instance->CR1 &= ~TIM_CR1_CEN; // pause tim
htimX.Instance->CR1 |= TIM_CR1_CEN;  // resume tim

是门限/非门控时钟,当定时器暂停时,它没有时钟,因此无法重新配置,但存在一个提前省电

__HAL_RCC_TIMx_CLK_ENABLE();  // pause tim
__HAL_RCC_TIMx_CLK_DISABLE(); // resume tim