基本信息
文件名称:STMicroelectronics 系列:STM32L4 系列_(18).STM32L4系列的时钟配置与校准.docx
文件大小:22.52 KB
总页数:20 页
更新时间:2025-06-19
总字数:约1.05万字
文档摘要

PAGE1

PAGE1

STM32L4系列的时钟配置与校准

时钟源概述

STM32L4系列微控制器提供了多种时钟源,包括内部时钟源和外部时钟源。这些时钟源可以灵活配置以满足不同的应用需求,确保系统在低功耗和高性能之间取得平衡。主要的时钟源包括:

内部时钟源:

HSI(HighSpeedInternal):16MHzRC振荡器,用于系统启动时的默认时钟源。

LSI(LowSpeedInternal):32kHzRC振荡器,主要用于低功耗模式和RTC(Real-TimeClock)。

MSI(Multi-SpeedInternal):可多速选择的内部RC振荡器,频率范围从100kHz到48MHz,用于低功耗应用。

外部时钟源:

HSE(HighSpeedExternal):外部晶振或振荡器,频率范围从4到26MHz,用于高性能应用。

LSE(LowSpeedExternal):32.768kHz外部晶振,主要用于RTC和低功耗模式。

时钟树结构

STM32L4系列的时钟树结构非常复杂,但也是其灵活性的源泉。时钟树的主要组成部分包括:

系统时钟(SYSCLK):可以由HSI、HSE、MSI或PLL(PhaseLockedLoop)提供,频率最高可达80MHz。

PLL:锁相环,可以将输入时钟源倍频到更高的频率,用于提高系统性能。

APB1和APB2总线时钟:分别用于低速和高速外设,可以通过预分频器配置不同的频率。

AHB总线时钟:用于高速外设,通常是系统时钟的直接分频。

实时时钟(RTC)时钟:可以由LSE或LSI提供,用于RTC和定时器。

时钟树配置步骤

选择时钟源:根据应用需求选择合适的时钟源。

配置预分频器:根据所需的外设时钟频率配置APB1、APB2和AHB总线的预分频器。

启用PLL:如果需要更高的系统时钟频率,配置并启用PLL。

设置系统时钟:选择最终的系统时钟源并设置其频率。

校准时钟:对于内部时钟源,进行校准以提高精度。

HSI时钟源配置

HSI时钟源是内部16MHzRC振荡器,通常在系统启动时默认启用。虽然HSI的精度不如外部晶振,但在某些低功耗或无外部晶振的应用中,HSI是一个很好的选择。

代码示例

以下是一个简单的示例,展示如何启用并使用HSI时钟源。

#includestm32l4xx_hal.h

//初始化系统时钟为HSI

voidSystemClock_Config_HSI(void)

{

RCC_OscInitTypeDefRCC_OscInitStruct={0};

RCC_ClkInitTypeDefRCC_ClkInitStruct={0};

//配置HSI时钟源

RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSIState=RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue=RCC_HSICALIBRATION_DEFAULT;

RCC_OscInitStruct.PLL.PLLState=RCC_PLL_NONE;//不使用PLL

if(HAL_RCC_OscInit(RCC_OscInitStruct)!=HAL_OK)

{

//初始化失败处理

Error_Handler();

}

//配置系统时钟源为HSI

RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV1;

RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;

if(HAL_RCC_ClockConfig(RCC_ClkInitStruct,FLASH_LATENCY_1)!=HAL_OK)

{

//时钟配置失败处理