6.3 时钟树配置项目:控制LED灯的闪烁快慢速度

# 6.3 时钟树配置项目:控制LED灯的闪烁快慢速度

通过RCC合理配置系统各部分时钟频率,利用中断服务程序切换LED状态,实现预设模式的LED闪烁效果。

描述

# 6.3.1 STM32CubeMx配置

# 1. 建立新工程

  1. 新建STM32工程,选择STM32F103C8T6芯片
  2. 设置工程名为"06 RCC"
  3. 选择SWD调试接口
  4. 启用外部高速时钟(HSE)并配置主频为72MHz

# 2. 引脚分配与参数配置

  1. 在Pinout&Configuration界面选择PB0引脚
  2. 配置为GPIO_Output模式
描述
  1. GPIO配置流程:
    • 进入System Core → GPIO
    • 输出电平设为Low
    • 模式选择Push-Pull Output
    • 输出速度设为High
描述

# 3. 生成代码

  1. Project Manager → Code Generator
  2. 勾选"Generate peripheral initialization as a pair of '.c/.h' files"
  3. 生成工程代码并打开项目

# 6.3.2 时钟树配置项目软件设计

# 1. RCC初始化函数

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  
  // 振荡器配置
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  // 时钟树配置
  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;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 2. 功能实现代码

#include "main.h"

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  
  while (1) 
  {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
    HAL_Delay(1000);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 6.3.3 时钟树配置项目下载验证

代码下载后观察LED按1秒间隔稳定闪烁。