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定时器成为实现基本延时功能的理想选择。

相关推荐
唯创知音16 分钟前
医疗器械设备语音ic芯片方案-选型大全
人工智能·单片机·物联网·智能家居·语音识别
YuCaiH4 小时前
【STM32】LED闪烁 & LED流水灯 & 蜂鸣器
笔记·stm32·单片机·嵌入式硬件
路过羊圈的狼4 小时前
STM32CUBEMX安富莱STM32-V6开发板使用FMC驱动SDRAM芯片MT48LC4M32B2TG
stm32·单片机·嵌入式硬件
manhuami20075 小时前
51单片机ALE引脚的作用 - 锁存地址和输出时钟信号并不冲突
单片机·嵌入式硬件·51单片机
搬砖的小码农_Sky5 小时前
单片机如何入门?
单片机·嵌入式硬件
Q23553688725 小时前
60V恒流IC SL8443B内置功率MOS 支持2.5A电流 降压LED恒流驱动芯片
单片机·嵌入式硬件
暮雪倾风6 小时前
【STM32-HAL库】TEMT6000光照强度传感器(STM32F407ZGT6)(附带工程下载链接)
stm32·单片机·嵌入式硬件
陌夏微秋8 小时前
00 硬件、嵌入式硬件知识-目录篇
linux·stm32·单片机·嵌入式硬件·mcu·ubuntu
yava_free9 小时前
OpenMV的无人驾驶智能小车模拟系统
c语言·c++·stm32