时钟作为数字系统中重要的基础组件,主要用来提供系统内部各个模块间同步、控制数据传输的时序、同步等功能。在stm32中,时钟是非常重要的,它负责驱动各种外设的工作以及CPU的运行。为了避免每个外设设计时需要独立一套时钟,stm32采用了一种全新的时钟架构,可以为每个外设提供专用的时钟源。以下将从时钟来源、时钟分配、时钟源选择三个方面进行详细阐述。
STM32系列的芯片,提供了内部和外部时钟源两种时钟来源。其中内部时钟源包含HSI和LSI的时钟源,外部时钟源包含HSE、LSE和PLL等多种选择。
HSI时钟源—高速内部时钟,频率为8MHz,主要用于提供芯片的时钟源。
LSI时钟源—低速内部时钟,频率为40kHz,主要用于RTC(实时时钟)模块。
HSE时钟源—高速外部时钟,是12M~25M的晶振时钟源,为实现更高的性能而存在。同时它也可以通过PLL倍频来得到高速时钟源。
LSE时钟源—低速外部时钟,频率为32.768kHz,主要用于RTC模块。
时钟的分配是由RCC(Reset and Clock Control)模块完成的,通过配置RCC模块,控制各个模块使用什么时钟源进行工作,它能够提供多个时钟源,使得每个模块都能够使用自己的时钟源,而不会相互干扰。此外,RCC还可以提供额外的时钟输出,供外部设备使用。
时钟的分配可以通过四个时钟域来完成:AHB1、AHB2、APB1和APB2,每个域拥有独立的时钟源分频器,能够针对不同性能和功耗的应用进行优化。
时钟源的选择取决于芯片的主频和内部外设使用情况,当时钟源不能满足应用要求时,需要选择合适的时钟源。例如,在使用CAN通信时,需要选择外部高速时钟源,而在使用I2C时,LSI时钟源可能会更加适用。
同时,为了避免出现一些特殊问题,建议选择PLL作为时钟倍频器源时,应该预先检查时钟源的有效性,以避免频率超过限制导致系统挂起。
以上就是对stm32中时钟的介绍,相信大家对于时钟的作用和使用方法已经有了一定的认识。