ARM M4 中 Systick 和 Timer 的区别
Different between Systick and Timer in ARM M4
我用 8051 完成了一个基本的微处理器。在本课程中,我学习了使用定时器来触发事件。一个学期后,我学习了使用 ARM Cortex M4 (Tiva C launchpad) 进行嵌入式系统编程,并开始使用 Systick 来触发事件(几乎在 FreeeRTOS 中使用),有时还用作计时器。
- 我想知道timer和systick有什么区别?因为有时我
认为系统行为与计时器相同。我搜索了
区别,知道了:systick是arm内核的,timer是芯片厂商的。
- 在什么情况下我们应该使用systick而不是timer?
请告诉我。谢谢。
你基本上已经掌握了。 systick 计时器是 ARM 内核的一部分。其他定时器来自芯片供应商。你,程序员可以随心所欲地使用它们。
它们很可能具有不同的功能,systick 计时器几乎仅用于简单持续时间的轮询或中断。芯片供应商的定时器通常可以做这些事情,甚至更多,有时他们可以为其他定时器生成时钟,有时他们可以生成从引脚输出的时钟或信号,有时他们可以为输入计时。有时供应商会在一个芯片中安装多个定时器,而这些定时器的功能各不相同。差异很大。
注意一些 ARM 核心没有系统定时器,或者可以说芯片供应商可以选择在没有它的情况下编译核心。在这些情况下,您唯一的选择是芯片供应商提供的定时器。
这里没有魔法,你就是程序员,你可以随心所欲地使用外围设备。
现在,如果您使用 RTOS(如 FreeRTOS 或其他),那么您的自由仅限于 RTOS 自身不消耗的内容(如果存在,它可能会消耗系统计时器,但留下其他计时器)。
这背后的原因是任何 OS 开发人员都可以为 任何 具有 SysTick 的 Cortex-M 编写代码,而无需担心供应商的特定细节。可以保证 SysTick 在各种设备上始终以相同的方式工作,因此需要完成的低级移植工作更少。
你的课程也一样,如果你正在编写裸机,你不需要担心设备供应商,直到你使用他们的外围设备(定时器、uart、看门狗)。
我用 8051 完成了一个基本的微处理器。在本课程中,我学习了使用定时器来触发事件。一个学期后,我学习了使用 ARM Cortex M4 (Tiva C launchpad) 进行嵌入式系统编程,并开始使用 Systick 来触发事件(几乎在 FreeeRTOS 中使用),有时还用作计时器。
- 我想知道timer和systick有什么区别?因为有时我 认为系统行为与计时器相同。我搜索了 区别,知道了:systick是arm内核的,timer是芯片厂商的。
- 在什么情况下我们应该使用systick而不是timer? 请告诉我。谢谢。
你基本上已经掌握了。 systick 计时器是 ARM 内核的一部分。其他定时器来自芯片供应商。你,程序员可以随心所欲地使用它们。
它们很可能具有不同的功能,systick 计时器几乎仅用于简单持续时间的轮询或中断。芯片供应商的定时器通常可以做这些事情,甚至更多,有时他们可以为其他定时器生成时钟,有时他们可以生成从引脚输出的时钟或信号,有时他们可以为输入计时。有时供应商会在一个芯片中安装多个定时器,而这些定时器的功能各不相同。差异很大。
注意一些 ARM 核心没有系统定时器,或者可以说芯片供应商可以选择在没有它的情况下编译核心。在这些情况下,您唯一的选择是芯片供应商提供的定时器。
这里没有魔法,你就是程序员,你可以随心所欲地使用外围设备。
现在,如果您使用 RTOS(如 FreeRTOS 或其他),那么您的自由仅限于 RTOS 自身不消耗的内容(如果存在,它可能会消耗系统计时器,但留下其他计时器)。
这背后的原因是任何 OS 开发人员都可以为 任何 具有 SysTick 的 Cortex-M 编写代码,而无需担心供应商的特定细节。可以保证 SysTick 在各种设备上始终以相同的方式工作,因此需要完成的低级移植工作更少。
你的课程也一样,如果你正在编写裸机,你不需要担心设备供应商,直到你使用他们的外围设备(定时器、uart、看门狗)。