登录/注册

stm32定时器做微妙延时

更多

在STM32中使用定时器实现微秒(μs)级延时的步骤如下:


核心思路

  1. 配置定时器时钟:STM32定时器的时钟源通常为系统主频(如72MHz)。
  2. 计算分频系数:通过预分频器(PSC)将时钟分频到1MHz(1个时钟周期=1μs)。
  3. 设置自动重装载值:通过ARR(Auto-Reload Register)设定计数值,实现精准计时。
  4. 轮询标志位:通过检查定时器的更新事件标志位(UIF)判断计时完成。

代码实现(以TIM2为例)

1. 定时器初始化

#include "stm32f10x.h"

void TIM2_Delay_Init(void) {
    // 1. 开启TIM2时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

    // 2. 配置时基单元
    TIM_TimeBaseInitTypeDef TIM_InitStruct;
    TIM_InitStruct.TIM_Prescaler = 71;         // 分频系数72-1(72MHz / 72 = 1MHz)
    TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_InitStruct.TIM_Period = 0;             // 初始ARR值设为0(后续动态调整)
    TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInit(TIM2, &TIM_InitStruct);

    // 3. 启动定时器(但不开始计数)
    TIM_Cmd(TIM2, ENABLE);
}

2. 微秒延时函数

void TIM2_Delay_us(uint16_t us) {
    TIM2->CNT = 0;                            // 清零计数器
    TIM2->ARR = us - 1;                       // 设置自动重装载值(1μs/计次)
    TIM_ClearFlag(TIM2, TIM_FLAG_Update);     // 清除更新标志

    while (!TIM_GetFlagStatus(TIM2, TIM_FLAG_Update)); // 等待计时完成
}

关键说明

  1. 时钟分频

    • 若主频为72MHz,设置PSC=71后,定时器时钟 = 72MHz / (71+1) = 1MHz(即1μs/计次)。
  2. 动态ARR值

    • ARR = us - 1,因为计数器从0开始计数到ARR值共需us个周期。
  3. 阻塞式延时

    • 使用while循环轮询标志位,确保延时期间CPU持续等待。
  4. 适用范围

    • 适用于短时间延时(通常us级),长时间延时需注意系统实时性。

注意事项

通过上述方法,可实现精准的微秒级硬件延时。实际应用时建议通过示波器测试校准。

STM32G4系列芯片定时器延时输出问题

有人使用STM32G4系列芯片内部的多个定时器做PWM输出,输出频率一样,占空比也一样,均为50%。可是,当他中途调整各个

2024-07-01 09:45:20

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

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

2023-11-06 11:05:21

STM32基于HAL库实现微秒延时

HAL只提供了ms级的延时,但有些特殊场景,比如与通信速率较慢的设备通信时,会需要用到us级延时。STM32标准库一般是使用系统嘀嗒

2023-10-25 15:31:46

STM32】SysTick滴答定时器(delay延时函数讲解)

Systick定时器,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick

资料下载 李丽华 2022-02-10 10:35:54

Stm32入门——Systick定时器

Stm32入门——Systick定时器Systick定时器是什么?从原理上来说,Systick

资料下载 479461 2021-12-07 17:51:08

STM32定时器US延时

定时器”介绍的SysTick定时器,该定时器位于Cortex-M3内核中。外设定时器

资料下载 佚名 2021-12-05 15:36:03

STM32F4: Systick滴答定时器-延时函数讲解(五)

CM3,CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时

资料下载 1123127317 2021-12-01 15:21:04

定时器延时控制电机驱动程序下载

定时器延时控制电机驱动程序下载

资料下载 佚名 2021-04-01 16:46:54

电工知识—SIMATIC S7-1500 PLC定时器—断开延时定时器

断开延时定时器(SF)相当于继电器控制系统的断电延时时间继电器,是定时器

2023-04-21 09:06:16

SIMATIC S7-1500 PLC定时器—保持型接通延时定时器介绍

保持型接通延时定时器(SS)与接通延时定时器(SD)类似,但SS

2023-04-19 09:05:50

STM32定时器的分类及中断原理

本文主要介绍常规定时器中的TIM3,实现定时器中断的功能。STM32定时器

2023-01-12 17:29:17

STM32 SYSTICK定时器常见问题

我们知道,STM32库函数里通常使用来自内核的系统定时器SYSTICK作为时基,实现计数延时。一般来讲,ST公司提供的库函数里将SYSTICK

2022-09-13 16:20:10

定时器电路图工作原理(声光提示定时器电路/555定时器电路/相片曝光定时器电路)

定时器根据其输入条件导致完成动作的不同可分为接通延时型定时器、断开延时型

2021-11-05 16:07:23

STM32使用定时器延时函数时nCount值怎么取

STM32-使用定时器做延时函数时遇到的坑

2021-08-19 07:27:41

定时器ms和us延时函数

定时器做ms和us延时函数本文用的是STM32L461RCT6芯片

2021-08-12 07:52:28
7天热门专题 换一换
相关标签