STM32L0:暂停计时器?

STM32L0:暂停计时器?,stm32,Stm32,我用的是核子STM32L031。在我的应用程序中,我希望使用计时器和比较值生成中断。 我的问题是:我想启动计时器,然后暂停它(因此计数器值为halt,但不能重置),然后再次启动计时器(从halt值开始)。然后当它达到比较值时,它生成一个中断 如何在不重置计数器值的情况下暂停计时器? 而且我也不确定:HAL\u TIM\u BASE\u Stop\u IT()函数是否会暂停或重置计数器值 谢谢。 至少有两种方法: 首先是CR1寄存器中的set/reset CEN位,当计时器以这种方式暂停时,它可以

我用的是核子STM32L031。在我的应用程序中,我希望使用计时器和比较值生成中断。 我的问题是:我想启动计时器,然后暂停它(因此计数器值为halt,但不能重置),然后再次启动计时器(从halt值开始)。然后当它达到比较值时,它生成一个中断

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

谢谢。
至少有两种方法:

首先是CR1寄存器中的set/reset CEN位,当计时器以这种方式暂停时,它可以重新配置并使用(但我不能说通过HAL函数重新配置)

是门/取消门tim时钟,当计时器以这种方式暂停时,它不会计时,因此无法重新配置,但有一个进步是省电的

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

至少有两种方法:

首先是CR1寄存器中的set/reset CEN位,当计时器以这种方式暂停时,它可以重新配置并使用(但我不能说通过HAL函数重新配置)

是门/取消门tim时钟,当计时器以这种方式暂停时,它不会计时,因此无法重新配置,但有一个进步是省电的

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

值得注意的是,通过RCC选通时钟后,您将无法访问任何计时器寄存器(包括计数)。我不记得是重置时钟还是选通时钟,或者两者兼而有之,但如果访问时钟选通外围设备的寄存器,可能会导致总线故障。感谢您的帮助@imberr。-第一种方法:我认为可以选择想要的计时器第二种方法:当使用这些HAL功能时,是否会停止所有计时器的时钟?或者我们可以只选择想要的计时器吗?我曾经使用过
STM32F207
F091
F411
STM8L051
L151
,对于所有这些MCU
RCC
寄存器,每个外围实例都有一位时钟控制。所以我认为只有想要的计时器时钟会受到影响。无论如何,您可以打开MCU的参考手册,查看RCC\u APxxENR寄存器中显示的位,或者只打开
\uu HAL\u RCC\u TIMx\u CLK\u ENABLE()
宏的定义。值得注意的是,通过RCC选通时钟,您将无法访问任何计时器寄存器(包括计数)。我不记得是重置时钟还是选通时钟,或者两者兼而有之,但如果访问时钟选通外围设备的寄存器,可能会导致总线故障。感谢您的帮助@imberr。-第一种方法:我认为可以选择想要的计时器第二种方法:当使用这些HAL功能时,是否会停止所有计时器的时钟?或者我们可以只选择想要的计时器吗?我曾经使用过
STM32F207
F091
F411
STM8L051
L151
,对于所有这些MCU
RCC
寄存器,每个外围实例都有一位时钟控制。所以我认为只有想要的计时器时钟会受到影响。无论如何,您可以打开MCU的参考手册,查看RCC\u APxxENR寄存器中显示的位,或者只打开
\u HAL\u RCC\u TIMx\u CLK\u ENABLE()
宏的定义。