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