当前位置: 首页 > news >正文

STM32 HAL 通用定时器延时函数

使用通用定时器TIM3,实现ms、us延时。

delay.c

#include "delay.h"
#include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** @brief  初始化定时器3用于延时* @param  无* @retval 无*/
void Delay_Init(void)
{TIM_ClockConfigTypeDef sClockSourceConfig = {0};/* 使能TIM3时钟 */__HAL_RCC_TIM3_CLK_ENABLE();/* 基础配置 */htim3.Instance = TIM3;htim3.Init.Prescaler = 72-1;  // 72MHz / 72 = 1MHz,即计数频率为1MHz,计数周期为1ushtim3.Init.CounterMode = TIM_COUNTERMODE_UP;htim3.Init.Period = 0xFFFF;  // 最大计数值htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;if (HAL_TIM_Base_Init(&htim3) != HAL_OK){Error_Handler();}sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK){Error_Handler();}/* 启动定时器 */HAL_TIM_Base_Start(&htim3);
}/*** @brief  微秒级延时* @param  nus: 延时的微秒数,范围:0~65535* @retval 无*/
void delay_us(uint16_t nus)
{uint16_t differ;uint16_t ticks = nus;uint16_t start = __HAL_TIM_GET_COUNTER(&htim3);while(1){uint16_t now = __HAL_TIM_GET_COUNTER(&htim3);if(now < start)differ = now + 65536 - start;  // 处理计数器溢出elsediffer = now - start;if(differ >= ticks)break;}
}/*** @brief  毫秒级延时* @param  nms: 延时的毫秒数* @retval 无*/
void delay_ms(uint16_t nms)
{uint32_t i;for(i = 0; i < nms; i++){delay_us(1000);  // 1ms = 1000us}
}

 delay.h

#ifndef __DELAY_H
#define __DELAY_H#include "stm32f1xx_hal.h"void Delay_Init(void);
void delay_us(uint16_t nus);
void delay_ms(uint16_t nms);#endif /* __DELAY_H */

 使用示例

  Delay_Init();delay_ms(100);

相关文章:

  • 观察者 ➜ 事件总线:一路走来的碎碎念
  • 贪心、动态规划、其它算法基本原理和步骤
  • 00.IDEA 插件推荐清单(2025)
  • fastdds:传输层SHM和DATA-SHARING的区别
  • java输出HelloWorld
  • C语言动规学习
  • HOOPS Exchange 与HOOPS Communicator集成:打造工业3D可视化新标杆!
  • 【SAP ME 44】在 HANA DB中报废SFC时的SHOP_ORDER表记录锁定
  • MyBatis框架
  • 图+文+语音一体化:多模态合成数据集构建的实战与方法论
  • 利用deepseek+Mermaid画流程图
  • C++类和对象上
  • 什么是单元测试的“覆盖率”
  • 《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计
  • mysql collation_database 参数
  • Linux内核机制——内存管理
  • Git LFS 学习笔记:原理、配置、实践与心路历程
  • 【ROS】TEB 规划器
  • 概率多假设跟踪(PMHT):多目标跟踪中的概率软关联与高效跟踪算法解析
  • 继承的了解与学习
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 亚马逊拟为商品标注“关税成本”,特朗普致电贝索斯讨说法
  • 中央网信办部署开展“清朗·整治AI技术滥用”专项行动
  • 体重管理门诊来了,瘦不下来的我们有救了?|健康有方FM
  • 国台办:相关优化离境退税政策适用于来大陆的台湾同胞
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构