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);   //计时结束就关掉定时器
	
}
相关推荐
终焉代码几秒前
【Linux】进程初阶(1)——基本进程理解
linux·运维·服务器·c++·学习·1024程序员节
朱嘉鼎1 小时前
寄存器编写LED程序
stm32·单片机·架构·keilmdk
喵了meme1 小时前
Linux学习日记6:文件IO与标准IO
linux·c语言·学习
点灯小铭2 小时前
基于单片机的智能厨房环境控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
im_AMBER6 小时前
Leetcode 38
笔记·学习·算法·leetcode
LS_learner6 小时前
运放的虚短和虚断
嵌入式硬件
正经教主8 小时前
【Trae+AI】和Trae学习搭建App_01(附加可略过):测试Trae的后端功能
学习·app
桃子不吃李子9 小时前
axios的二次封装
前端·学习·axios
明明真系叻9 小时前
最优传输理论学习(1)+PINN文献阅读
深度学习·学习
笨鸟笃行10 小时前
百日挑战之单词篇(第三天)
学习