stm32 您所在的位置:网站首页 25kbps是多少微秒 stm32

stm32

2024-06-08 16:53| 来源: 网络整理| 查看: 265

我是使用 HAL 函数的新手。 The description函数的HAL_GetTick()表示它“提供 刻度 值,单位为 毫秒 ”。

我不明白这个函数是否返回滴答声或毫秒。当然,要将滴答声转换为毫秒,我需要知道一毫秒内有多少滴答声,而且它是特定于 CPU 的。

那么HAL_GetTick() 是什么意思?究竟回归?

编辑:

我真正的问题是知道如何以微秒为单位测量时间。所以我想从 HAL_GetTick()并将它们转换为微秒。这在评论和至少一个答案中得到了解决,所以我在这里也提到了这一点,我编辑了标题。

最佳答案

HAL_GetTick() 应该 返回自启动以来经过的毫秒数,因为很多 HAL 函数都依赖于它。你如何实现它取决于你。默认情况下,HAL_Init()查询系统时钟速度,并将 SysTick 频率设置为该频率的 1/1000:

__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { /*Configure the SysTick to have interrupt in 1ms time basis*/ HAL_SYSTICK_Config(SystemCoreClock /1000); /*Configure the SysTick IRQ priority */ HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0); /* Return function status */ return HAL_OK; } 然后默认的 SysTick 中断处理程序调用 HAL_IncTick()每毫秒递增一次内部计数器,HAL_GetTick()返回该计数器的值。

所有这些函数都定义为 weak ,因此您可以覆盖它们,只要您的版本为 HAL_GetTick()返回以毫秒为单位的耗时,就可以了。你可以例如替换 HAL_InitTick()让 SysTick 以 10 kHz 运行,但是你应该确保 HAL_IncTick()仅在每 10 个中断时调用。在 216 MHz STM32F7 Controller (或刚刚发布的 400MHz STM32H743)上,您实际上可以降至 1 MHz Systick,但您应该非常小心,尽快从处理程序返回。除非你在处理程序中做一些硬件计数器不能做的事情,否则它仍然会浪费宝贵的处理器周期。

或者您可以完全不配置 SysTick(使用空函数覆盖 HAL_InitTick()),但设置一个具有足够预分频器的 32 位硬件定时器来计数每微秒,并让 HAL_GetTick()返回定时器计数器。

回到你真正的问题,以微秒为单位测量时间,有更好的方法。

如果您有一个 32 位定时器可用,那么您可以将相应 APB 时钟的 MHz 值放入预分频器中,启动它,然后您的微秒时钟就出现了,根本不会占用您的应用程序的处理时间。此代码应在 STM32L151/152/162STM32F4 上启用它(未经测试):

__HAL_RCC_TIM5_CLK_ENABLE(); TIM5->PSC = HAL_RCC_GetPCLK1Freq()/1000000 - 1; TIM5->CR1 = TIM_CR1_EN; 然后通过阅读 TIM5->CNT 随时获取它的值.

查看您的引用手册,哪些硬件计时器具有 32 位计数器,以及它的时钟从何而来。它在整个 STM32 系列中变化很大,但应该在 F4 上。

如果您不能使用 32 位定时器,则有内核周期计数器。只需启用一次

CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; DWT->CYCCNT = 0; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; 然后从 DWT->CYCCNT 中读取值.请注意,当它返回经过的处理器周期时,它将在几秒钟内溢出。

编辑:

我刚刚注意到您使用的是 STM32L0。所以,忘记 32 位定时器和 200+ MHz 内核吧。使用DWT->CYCCNT ,或者非常仔细地考虑您想要测量的间隔有多长,以及精度如何,然后使用 16 位计时器。您可以将它作为一个单独的问题发布,更详细地描述您的硬件的外观以及它应该做什么。可能有一种方法可以通过您想要计时的事件直接触发计数器开始/停止..

关于stm32 - HAL_GetTick() 是否返回刻度或毫秒? (以及如何以微秒为单位进行测量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42747128/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有