STM32L0:暂停计时器?
我用的是核子STM32L031。在我的应用程序中,我希望使用计时器和比较值生成中断。 我的问题是:我想启动计时器,然后暂停它(因此计数器值为halt,但不能重置),然后再次启动计时器(从halt值开始)。然后当它达到比较值时,它生成一个中断 如何在不重置计数器值的情况下暂停计时器? 而且我也不确定:HAL\u TIM\u BASE\u Stop\u IT()函数是否会暂停或重置计数器值 谢谢。STM32L0:暂停计时器?,stm32,Stm32,我用的是核子STM32L031。在我的应用程序中,我希望使用计时器和比较值生成中断。 我的问题是:我想启动计时器,然后暂停它(因此计数器值为halt,但不能重置),然后再次启动计时器(从halt值开始)。然后当它达到比较值时,它生成一个中断 如何在不重置计数器值的情况下暂停计时器? 而且我也不确定:HAL\u TIM\u BASE\u Stop\u IT()函数是否会暂停或重置计数器值 谢谢。 至少有两种方法: 首先是CR1寄存器中的set/reset CEN位,当计时器以这种方式暂停时,它可以
至少有两种方法: 首先是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
,对于所有这些MCURCC
寄存器,每个外围实例都有一位时钟控制。所以我认为只有想要的计时器时钟会受到影响。无论如何,您可以打开MCU的参考手册,查看RCC\u APxxENR寄存器中显示的位,或者只打开\uu HAL\u RCC\u TIMx\u CLK\u ENABLE()
宏的定义。值得注意的是,通过RCC选通时钟,您将无法访问任何计时器寄存器(包括计数)。我不记得是重置时钟还是选通时钟,或者两者兼而有之,但如果访问时钟选通外围设备的寄存器,可能会导致总线故障。感谢您的帮助@imberr。-第一种方法:我认为可以选择想要的计时器第二种方法:当使用这些HAL功能时,是否会停止所有计时器的时钟?或者我们可以只选择想要的计时器吗?我曾经使用过STM32F207
,F091
,F411
STM8L051
,L151
,对于所有这些MCURCC
寄存器,每个外围实例都有一位时钟控制。所以我认为只有想要的计时器时钟会受到影响。无论如何,您可以打开MCU的参考手册,查看RCC\u APxxENR寄存器中显示的位,或者只打开\u HAL\u RCC\u TIMx\u CLK\u ENABLE()
宏的定义。