ARM M4 中 Systick 和 Timer 的区别

Different between Systick and Timer in ARM M4

我用 8051 完成了一个基本的微处理器。在本课程中,我学习了使用定时器来触发事件。一个学期后,我学习了使用 ARM Cortex M4 (Tiva C launchpad) 进行嵌入式系统编程,并开始使用 Systick 来触发事件(几乎在 FreeeRTOS 中使用),有时还用作计时器。

你基本上已经掌握了。 systick 计时器是 ARM 内核的一部分。其他定时器来自芯片供应商。你,程序员可以随心所欲地使用它们。

它们很可能具有不同的功能,systick 计时器几乎仅用于简单持续时间的轮询或中断。芯片供应商的定时器通常可以做这些事情,甚至更多,有时他们可以为其他定时器生成时钟,有时他们可以生成从引脚输出的时钟或信号,有时他们可以为输入计时。有时供应商会在一个芯片中安装多个定时器,而这些定时器的功能各不相同。差异很大。

注意一些 ARM 核心没有系统定时器,或者可以说芯片供应商可以选择在没有它的情况下编译核心。在这些情况下,您唯一的选择是芯片供应商提供的定时器。

这里没有魔法,你就是程序员,你可以随心所欲地使用外围设备。

现在,如果您使用 RTOS(如 FreeRTOS 或其他),那么您的自由仅限于 RTOS 自身不消耗的内容(如果存在,它可能会消耗系统计时器,但留下其他计时器)。

这背后的原因是任何 OS 开发人员都可以为 任何 具有 SysTick 的 Cortex-M 编写代码,而无需担心供应商的特定细节。可以保证 SysTick 在各种设备上始终以相同的方式工作,因此需要完成的低级移植工作更少。

你的课程也一样,如果你正在编写裸机,你不需要担心设备供应商,直到你使用他们的外围设备(定时器、uart、看门狗)。