0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32如何使用定时器实现微秒(us)级延时?

工程师邓生 来源:未知 作者:刘芹 2023-11-06 11:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32如何使用定时器实现微秒(us)级延时?

在STM32微控制器中,可以使用定时器实现微秒级延时。具体来说,可以使用定时器的计数器和自动重装载寄存器来生成精确的延时。

以下将详细介绍如何使用定时器实现微秒级延时的步骤:

步骤 1:配置定时器

首先,需要选择一个适合的定时器。大多数STM32微控制器都配备了多个定时器,因此,可以根据需求选择一个可用的定时器。一般来说,TIM2和TIM3定时器是常用的,具备较高的精度和可编程性。

接下来,需要进行定时器的基本配置,包括时钟源、计数模式、分频系数等。可以根据具体需求,选择合适的配置参数。通常情况下,可以选择内部时钟源作为定时器的时钟源,并将分频系数设置为最小,以获得最高的精度。

步骤 2:设置计数周期

接下来,需要设置定时器的计数周期,以确定延时的时长。根据定时器的位数(例如,16位或32位),可以设置计数器的最大值。通过修改自动重装载寄存器(ARR),可以设置计数器的最大值。

计算最大延时(us)的公式为:

最大延时(us)= (计数器最大值+1) * 定时器分频系数 / 定时器频率

通过调整最大值,即可获得所需的微秒级延时。

步骤 3:编写延时函数

最后,根据上述配置,编写一个延时函数来实现微秒级延时。这个函数的实现基于定时器的中断机制。

首先,需要使能定时器的中断,并配置定时器中断的优先级。可以使用HAL库提供的相关函数来完成这些配置。

然后,编写中断服务函数(ISR),并在其中对延时时间进行判断。当计数器计数达到预设值时,就说明已经延时完成,可以清除中断标志位,并执行相应的处理。

需要注意的是,在定时器中断函数中,可以使用全局变量来统计中断次数,以便于在延时函数中进行计时。

最后,在延时函数中,可以使用循环或者其他方式,来判断延时是否达到预设的时间。比较常用的方法是使用一个while循环,判断计数次数是否满足条件。当满足条件时,延时完成。

综上所述,通过以上步骤,可以在STM32微控制器中使用定时器实现微秒级延时。在实际应用中,可以根据需求进行相应的配置和优化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    8250

    浏览量

    162402
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371169
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121749
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CST92F30的定时器怎么做到微秒级别

    请问大家CST92F30的定时器怎么做到微秒级别。当前SDK中没有关于定时器的配置说明
    发表于 12-03 11:10

    CW32L010+定时器介绍

    这一篇介绍一下定时器的内容,从了解CW定时器到功能实现。 一、定时器类型 CW32L010系列MCU配备了多种类型的定时器,包括: 通用和基
    发表于 12-01 07:53

    使用系统定时器SysTick来实现精确延时微秒和毫秒函数

    到 0 时,将从RELOAD 寄存中自动重装载定时初值,开始新一轮计数。使用内核的SysTick定时器实现延时,可以不占用系统
    发表于 11-20 07:12

    PWM、定时器、SysTick 区别及应用场景

    。下面我们来梳理清楚。一、基本概念定时器(Timer)MCU内最基础的计数外设,通过计数时钟周期实现定时、计数功能。多数MCU内部有多个通用定时器,可配置为
    的头像 发表于 11-17 10:53 227次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    如何利用蜂鸟HbirdV2-SoC自带外设PWM进行毫秒延时和计时

    ); SOC_CORE_FREQ = get_cpu_freq(); } 完成TIM0配置后,就可以设置一个微秒延时函数了,本例中模仿e203自带的delay_1ms()函数,实现
    发表于 10-30 07:47

    硬件定时器如何配置固定频率?

    需求是:以25.6kHz操作引脚电平,系统主频为160MHZ,STM32F429 按照文档里“HWTIMER 设备”开启了硬件定时器,但只能配置时间,按时间换算我要的这个频率为 39.0625us
    发表于 09-26 07:12

    ‌TLC551 LinCMOS™ 定时器芯片技术文档总结

    TLC551 是使用 TI LinCMOS 制造的单片定时电路^TM的^过程。这定时器与 CMOS、TTL 和 MOS 逻辑完全兼容,工作频率高达 2 MHz。与 NE555 定时器相比,该器件由于输入阻抗高,因此使用更小的
    的头像 发表于 09-24 09:16 639次阅读
    ‌TLC551 LinCMOS™ <b class='flag-5'>定时器</b>芯片技术文档总结

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1335次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    大彩讲堂:VisualHMI-LUA教程-定时器的使用指南

    定时器的使用
    的头像 发表于 08-31 16:59 850次阅读
    大彩讲堂:VisualHMI-LUA教程-<b class='flag-5'>定时器</b>的使用指南

    工业互联网时代:PTP时钟服务如何实现微秒精准同步?

    同一个核心技术需求——高精度时间同步。作为工业互联网、物联网及通信网络的基础设施,PTP时钟服务正以亚微秒的同步精度,重塑现代工业的时序控制体系。一、从NTP
    的头像 发表于 08-21 14:01 651次阅读
    工业互联网时代:PTP时钟服务<b class='flag-5'>器</b>如何<b class='flag-5'>实现</b><b class='flag-5'>微秒</b><b class='flag-5'>级</b>精准同步?

    stm32H743定时器溢出的原因?怎么解决?

    我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,
    发表于 06-23 08:26

    MCU定时器/计数

    RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求‌。 一、‌硬件
    的头像 发表于 04-27 13:54 592次阅读

    【S32K 进阶之旅】如何使用 S32K3 PIT 定时器实现精准延时

    周期中断定时器(PeriodicInterruptTimer,PIT)模块顾名思义,就是通过计时行为引发周期性中断事件的触发。本文基于S32K312开发板实现延时功能,在此之前先简单
    的头像 发表于 03-10 16:33 1192次阅读
    【S32K 进阶之旅】如何使用 S32K3 PIT <b class='flag-5'>定时器</b><b class='flag-5'>实现</b>精准<b class='flag-5'>延时</b>?

    STM32Cube配置RTOS时定时器如何选择?

    STM32Cube配置RTOS时定时器如何选择
    发表于 03-07 08:47

    stm32同一个定时器不同的通道,可以不同时的输出pwm波形吗?

    请问,stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗?比如tim1的ch1输出,延时几毫秒后tim1的ch2输出。 现在是要输出两个相位不同的pwm波形,延时时间、
    发表于 03-07 08:20