在嵌入式系统开发中,延迟函数是一个非常常用的功能,用于控制程序执行的节奏。本文将介绍如何使用 SysTick 定时器来实现一个微秒级的延迟函数 `Delay_Nus`,并对其进行改进和优化。并对应DS18B20下载文件中的延时函数讲解。
什么是 SysTick?
SysTick 是许多微控制器(例如 STM32 系列)内置的定时器,专门用于提供精确的时间延迟和定时事件。它可以通过配置加载值和控制寄存器来实现倒计时功能,适合用于产生短时间延迟。
初始代码
以下是我们最初的 `Delay_Nus` 函数代码:
void Delay_Nus(uint32_t Nus)
{
SysTick->LOAD = Nus * 9; // 将计算得出的值加载到SysTick定时器中
SysTick->CTRL |= 0x01; // 启用SysTick定时器
while (!(SysTick->CTRL & (1 << 16))); // 等待计数完成
SysTick->CTRL = 0x00000000; // 禁用SysTick定时器
SysTick->VAL = 0x00000000; // 清除SysTick计数值
}
代码解析
SysTick->LOAD:设置要加载的计数值。假设 1 个滴答对应约 9 纳秒,我们乘以所需的微秒数。
SysTick->CT

1万+




被折叠的 条评论
为什么被折叠?



