美文网首页
STM32F103 五个时钟源

STM32F103 五个时钟源

作者: 孙庚辛 | 来源:发表于2023-10-15 21:11 被阅读0次

STM32F103微控制器确实有五个时钟源,分别是HSI、LSI、HSE、LSE和PLL。这些时钟源的主要区别在于他们的频率、稳定性和功耗。以下是这五个时钟源的简要说明:

  1. HSI (High Speed Internal):这是一个高速内部振荡器,频率通常为8 MHz。这个时钟源在微控制器启动时默认启用,因此不需要额外的硬件。

  2. LSI (Low Speed Internal):这是一个低速内部振荡器,频率通常为40 kHz。这个时钟源主要用于驱动独立看门狗和实时时钟。

  3. HSE (High Speed External):这是一个高速外部振荡器,频率范围通常在4 MHz到32 MHz。这个时钟源需要连接到外部的晶振或者振荡器。

  4. LSE (Low Speed External):这是一个低速外部振荡器,频率通常为32.768 kHz。这个时钟源主要用于驱动实时时钟,需要连接到外部的32.768 kHz晶振。

  5. PLL (Phase-Locked Loop):这是一个相位锁定环,它可以将HSI或者HSE的频率乘以一个因子,生成更高的频率。这个时钟源主要用于生成高性能的系统时钟。

这些时钟源之间的关系主要在于它们的使用场景和配置方式。例如,你可以配置微控制器使用HSI作为系统时钟,或者使用PLL将HSE的频率提高,然后使用PLL作为系统时钟。同时,你也可以使用LSI或者LSE来驱动实时时钟,这取决于你对频率稳定性和功耗的需求。

总的来说,选择哪个时钟源取决于你的应用需求,包括频率、稳定性、功耗和成本等因素。

使用STM32F103的PLL(Phase-Locked Loop)将HSE(High-Speed External)的频率提高,并进一步使用PLL作为系统时钟的步骤如下:

  1. 启动和稳定HSE:

    • 首先,确保已连接外部晶振或振荡器,并启用HSE。
    • 等待HSE启动并稳定。
  2. 配置PLL:

    • 选择HSE作为PLL的输入源。
    • 设置PLL的乘法因子。STM32F103的PLL允许从2到16.5的乘法因子。例如,如果HSE是8MHz,并且你想得到72MHz的系统时钟,你可以设置PLL的乘法因子为9。
  3. 启动PLL:

    • 启动PLL。
    • 等待PLL稳定。这可以通过检查PLL的锁定状态来确认。
  4. 配置系统时钟:

    • 在切换到PLL作为系统时钟之前,最好先降低系统时钟的速度,以确保系统在高频下可以稳定运行。
    • 选择PLL作为系统时钟。
    • 配置闪存延迟。当系统时钟的频率超过一定的值时,你可能需要增加闪存的访问延迟。
  5. 调整总线和外设时钟:

    • 根据需要,你可以配置AHB、APB1和APB2总线的时钟分频。例如,APB1的时钟不能超过36MHz,因此如果系统时钟为72MHz,APB1的分频因子应该设置为2。
  6. 确认设置:

    • 你可以检查并确认PLL输出的频率以确保一切正常。

以下是使用STM32的标准外设库进行配置的一个简化示例(请注意,你可能需要根据你的具体需求和外部晶振的频率进行调整):

RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;

// 启动HSE
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;  // 乘法因子为9
HAL_RCC_OscConfig(&RCC_OscInitStruct);

// 设置系统时钟为PLL输出
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
                              RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;   // APB1分频因子为2
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);

上述代码是基于STM32 HAL库的,具体实现可能会根据所使用的库和STM32F103的具体型号而有所不同。

相关文章

  • 9.14知识点总结

    内部时钟源和外部时钟源 复位和按键 蜂鸣器

  • ntp时钟源

    总部将洛阳时钟源也通过承载网开放给了分公司,分公司有需要可以申请开通网络策略访问即可。

  • RTC 相关

    RTC 是一个独立的定时器,能够在 STM32 的低功耗模式下运行。 选择 RTC 时钟源 RTC 时钟的时钟源能...

  • STM32学习:STM32时钟系统

    一、时钟树介绍 三种不同的时钟源可被用来驱动系统时钟(SYSCLK): HSI振荡器时钟 HSE振荡器时钟 PLL...

  • STM32F10x之RCC

    1 综述 1.1 时钟源 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL。 HSI...

  • 12.29

    今天是星期五。 今天上午郭老师给大家讲了复位和时钟源gcc。通过改变时钟源可以改变整个系统的频率。时钟可分为三个类...

  • STM32基本知识

    HSE是指高速的外部时钟,来源:无源晶振;LSE是指低速的外部时钟;LSI是指高速的内部时钟,当外部时钟瘫痪后,自...

  • 10.11 嵌入式知识点总结

    1.内部时钟源采用 RC振荡器不精准 2.外部时钟源采用晶振精准 3.0xCCCC开始启动看门狗 4.0xAAAA...

  • 9.13总结

    点亮控制板上的LED灯(红,绿,蓝): 1.打开时钟源; 2.配置GPIOH时钟源; 3.控制数据寄存器。 根据S...

  • 12/14

    STM32时钟系统在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。①HSI是高速内部时钟,...

网友评论

      本文标题:STM32F103 五个时钟源

      本文链接:https://www.haomeiwen.com/subject/wbezbdtx.html