6.3 时钟树配置项目:控制LED灯的闪烁快慢速度
# 6.3 时钟树配置项目:控制LED灯的闪烁快慢速度
通过RCC合理配置系统各部分时钟频率,利用中断服务程序切换LED状态,实现预设模式的LED闪烁效果。

# 6.3.1 STM32CubeMx配置
# 1. 建立新工程
- 新建STM32工程,选择STM32F103C8T6芯片
- 设置工程名为"06 RCC"
- 选择SWD调试接口
- 启用外部高速时钟(HSE)并配置主频为72MHz
# 2. 引脚分配与参数配置
- 在Pinout&Configuration界面选择PB0引脚
- 配置为GPIO_Output模式

- GPIO配置流程:
- 进入System Core → GPIO
- 输出电平设为Low
- 模式选择Push-Pull Output
- 输出速度设为High

# 3. 生成代码
- Project Manager → Code Generator
- 勾选"Generate peripheral initialization as a pair of '.c/.h' files"
- 生成工程代码并打开项目
# 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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
# 6.3.3 时钟树配置项目下载验证
代码下载后观察LED按1秒间隔稳定闪烁。