我对我的STM32F7设备上的时钟系统感到困惑(来自STMicroelectronics的Cortex-M7微控制器)。参考手册没有充分阐明这些时钟之间的差异: SYSCLK HCLK FCLK 参考手册在第5.2章“时钟”中称:“RCC使用AHB时钟(HCLK)除以8的值来提供Cortex系统定时器(SysTick)的外部时钟。” 但这种说法与CubeMX中的图表相矛盾。请注意,在CubeMX中,我可以自己选择HCLK到“Cortex系统定时器”的分频器,它不一定是8的倍数。
通常情况下,HCLK和FCLK之间唯一的区别就是: HCLK是主CPU时钟,也用于AHB接口。当CPU处于睡眠状态(例如WFI)时,它可以被屏蔽。 FCLK与HCLK同步,但在CPU进入睡眠状态时不被屏蔽,以便在中断发生时唤醒。
完整的引用(至少是我正在查看的参考手册)是:RCC使用AHB时钟(HCLK)除以8来提供Cortex系统定时器(SysTick)的外部时钟。SysTick可以使用这个时钟或Cortex时钟(HCLK)工作,可以在SysTick控制和状态寄存器中进行配置。诚然,这段话措辞不够清晰,但它的意思很简单,就是SysTick接收到HCLK除以8的时钟信号以及未经分频的HCLK信号。然后,您可以选择SysTick应该跟随哪个时钟信号。