STM32系统时钟的配置方法——内部高速时钟HSI作为系统时钟源

如何使用内部时钟源HSI配置STM32F103C8T6的系统时钟

本文将配置为STM32F103C8T6使用内部高速时钟(HSI)和相位锁定环(PLL),以使系统时钟(SYSCLK)达到48MHz为例进行讲述。

STM32时钟系统概述

STM32的时钟系统非常灵活,可以根据应用需求进行精细的配置。它包括多种时钟源,如内部高速时钟(HSI)、外部高速时钟(HSE)、内部低速时钟(LSI)、外部低速时钟(LSE)和相位锁定环(PLL)等。通过合理配置这些时钟源,我们可以优化微控制器的性能和功耗。

配置步骤

1. 确定时钟需求

根据STM32F103C8T6的功能需求,本项目需要将系统时钟配置为48MHz,以满足外设通信和数据处理的速度要求。

2. 选择时钟源和配置PLL

由于STM32F103C8T6的HSI固定频率为8MHz,我们将使用HSI和PLL来实现48MHz的系统时钟频率。具体步骤如下:

  1. 启用HSI作为PLL的输入时钟源。
  2. 将HSI时钟除以2,然后配置PLL倍频因子为12,以生成48MHz的PLL输出时钟。
  3. 将PLL输出时钟设置为系统时钟源。

3. 配置代码示例

下面是使用STM32 HAL库进行配置的示例代码:

#include "stm32f1xx_hal.h"

void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    // 启用HSI,并配置PLL
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
        Error_Handler();
    }

    // 选择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;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
    {
        Error_Handler();
    }
}

void Error_Handler(void)
{
    while(1)
    {
    }
}

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    // 用户代码...
}

总结

通过以上步骤,我们可以成功将STM32F103C8T6的系统时钟通过内部高速时钟HSI配置为48MHz。
希望本文能帮助大家更好地理解STM32时钟系统的配置方法。
请根据你的实际需求进行调整,如果有任何疑问或者需要进一步的帮助,可以评论区讨论。

  • 16
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知行好事

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值