STM32完全学习——使用定时器1精确延时

一、定时器的相关配置

首先一定要是递减定时器,递增的不太行,控制的不够准确,其次在大于10微秒的延时是非常准确的,小于的话,就没有那没准,但是凑合能用。误差都在一个微秒以内。使用高级定时器也就是时钟频率高的定时器,是比较好用的。

二、延时函数的实现

这里使用阻塞的方式实现,定时范围就是3120个微秒。

cpp 复制代码
void delay_us(uint32_t us)
{
	HAL_TIM_Base_Start(&htim1);
	__HAL_TIM_SET_COUNTER(&htim1, us*21);   //动态更改计数器里面的值
	
	while (__HAL_TIM_GET_COUNTER(&htim1) != 0)  //判断计数器里面的值是否计时结束
	{                                           //因为是递减计数器,因此以0作为判断
		
	}
	HAL_TIM_Base_Stop(&htim1);   //计时结束就关掉定时器
	
}
相关推荐
大丈夫立于天地间7 分钟前
OSPF - 1类LSA(Router-LSA)
网络·网络协议·学习·信息与通信
老王WHH2 小时前
STM32——系统滴答定时器(SysTick寄存器详解)
stm32·单片机·嵌入式硬件
Chrikk4 小时前
NCCL学习笔记-概念全解
笔记·学习
GHL2842710904 小时前
redis学习-value数据结构
数据库·redis·学习
vortex54 小时前
正则表达式进阶学习(一):环视、捕获分组与后向引用
学习·正则表达式
武昌库里写JAVA4 小时前
Redis奇幻之旅(四)4. Redis Cluster
java·开发语言·spring boot·学习·课程设计
酒与花生米4 小时前
【Vue学习】Vue 组件实例的生命周期(四个阶段,八个钩子)
javascript·vue.js·学习
开心邮递员4 小时前
关于元学习的相关论文
学习
KBDYD10104 小时前
单片机控制
stm32·单片机·嵌入式硬件
私人珍藏库4 小时前
《空舞的巨兽》官方学习版
学习