我玩 SysTick 已经有几天了,我无法达到纳秒级的延迟。Systick 是否有可能达到如此小的值,或者我必须使用定时器和中断?虽然 LED 的工作延迟不会低于 350ns。这是来自我的 USB 示波器的图像:
一般来说,我想做一个项目(我只是在上面试验 LED 和 SysTick),它会是这样的:
其中 Δt = 250ns(其他参数将以某种方式确定)。问题是,我可以使用 SysTick 制作这些脉冲吗?
我玩 SysTick 已经有几天了,我无法达到纳秒级的延迟。Systick 是否有可能达到如此小的值,或者我必须使用定时器和中断?虽然 LED 的工作延迟不会低于 350ns。这是来自我的 USB 示波器的图像:
一般来说,我想做一个项目(我只是在上面试验 LED 和 SysTick),它会是这样的:
其中 Δt = 250ns(其他参数将以某种方式确定)。问题是,我可以使用 SysTick 制作这些脉冲吗?
STM32F407VG具有24 位SysTick 定时器,其最大时钟速度为168MHz(核心时钟速度)。这意味着,即使您将 SysTick 重载寄存器设置为:
0x000001(1 个周期)
你只能有 5.95ns 的周期。
我在RM0368 参考手册的第6.2 节时钟中找到了这一点:
RCC 为 Cortex 系统定时器 (SysTick) 的外部时钟提供除以 8 的 AHB 时钟 (HCLK)。SysTick 可以使用该时钟或 Cortex 时钟 (HCLK),可在 SysTick 控制和状态寄存器中配置.
因此,最大滴答速率可能受到时钟分频的限制。检查图 12. 时钟树以查看您应该使用哪个时钟配置来获得最大速度。