STM32的hal库在实现延时函数(例如:Delay_ms 等)为什么用滴答定时(Systick)而不是定时器定时中断,也不是RTC?

STM32的HAL库在实现延时函数(如Delay_ms等)时选择使用滴答定时器(Systick)而非定时器定时中断或RTC(实时时钟),主要基于以下几个原因:

Systick定时器的优势

  1. 集成在NVIC中:Systick定时器是Cortex-M内核的一部分,它集成在NVIC(嵌套向量中断控制器)中。这使得Systick定时器具有更高的访问权限和更直接的中断处理能力,从而能够更高效地实现延时功能。
  2. 简化的配置和使用:相较于其他定时器,Systick定时器的配置和使用相对简单。它通常只需要设置重装载值、时钟源和使能中断即可开始工作。这使得Systick定时器在实现基本延时功能时更加便捷。
  3. 低功耗和高效性:由于Systick定时器是内核自带的定时器,它在实现延时功能时能够更有效地利用系统资源,同时降低功耗。这对于需要低功耗运行的嵌入式系统来说尤为重要。

与其他定时方式的比较

  1. 定时器定时中断

    • 虽然定时器定时中断可以提供更高的精度和更多的功能(如输入捕获、PWM输出等),但其配置和使用相对复杂。
    • 在实现简单延时功能时,使用定时器定时中断可能会增加系统的复杂性和功耗。
  2. RTC

    • RTC主要用于提供实时时钟功能,其精度和稳定性通常较高,但功耗也相对较高。
    • 使用RTC来实现延时功能可能会增加不必要的功耗和复杂性,特别是在需要频繁调用延时函数的场景中。

HAL库中的实现

在HAL库中,延时函数(如HAL_Delay)通常是通过配置Systick定时器来实现的。HAL库提供了相关的API函数来初始化Systick定时器、设置重装载值以及实现延时功能。这些API函数简化了Systick定时器的配置和使用过程,使得开发者能够更加方便地实现延时功能。

STM32的HAL库在实现延时函数时选择使用Systick定时器是出于其集成在NVIC中、配置简单、低功耗和高效性等方面的考虑。这些优势使得Systick定时器成为实现基本延时功能的理想选择。

相关推荐
Zevalin爱灰灰4 分钟前
编程技巧(基于STM32)第一章 定时器实现非阻塞式程序——按键控制LED灯闪烁模式
stm32·单片机·嵌入式硬件
苏慕TRYACE3 小时前
RT-Thread+STM32L475VET6实现红外遥控实验
stm32·单片机·嵌入式硬件·rt-thread
小幽余生不加糖5 小时前
deepseek帮我设计物理量采集单片机口保护电路方案
单片机·嵌入式硬件
Ronin-Lotus6 小时前
蓝桥杯篇---IAP15F2K61S2串口
单片机·嵌入式硬件·职场和发展·蓝桥杯·c·iap15f2k61s2
yyqzjw7 小时前
【STM32】外部时钟|红外反射光电开关
stm32·单片机·嵌入式硬件
charlie1145141917 小时前
(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念
c语言·stm32·单片机·嵌入式硬件·学习·教程
苏慕TRYACE7 小时前
RT-Thread+STM32L475VET6——ADC采集电压
stm32·单片机·嵌入式硬件·rt-thread
jmlinux8 小时前
STM32 HAL库USART串口中断编程:环形缓冲区防止数据丢失
stm32·单片机·嵌入式硬件
W说编程9 小时前
STM32物联网终端实战:从传感器到云端的低功耗设计
网络·stm32·嵌入式硬件·物联网·struts
此去经年。10 小时前
I2C学习笔记-软件模拟I2C
笔记·单片机·学习