6.3 时钟树配置项目:控制LED灯的闪烁快慢速度
# 6.3 时钟树配置项目:控制LED灯的闪烁快慢速度
在本项目中,将通过合理配置RCC,确保系统各部分获得合适的时钟频率并修改系统时钟频率,改变切换LED灯状态的速度,实现LED灯的闪烁。
# 6.3.1 STM32CubeMx配置
# 1. 建立新工程
① 建立一个新的STM32工程;
② 选择芯片“STM32F103C8T6”;
③ 设置工程的名称为“06 RCC”;
# 2. 开启外部高速时钟源
- 在Pinout&Configuration界面选择“System Core”
- 双击“RCC”进行配置
- 进入“High Speed Clock (HSE)”,选择“Crystal/Ceramic Resonator”。

- 在“Clock Configuration”界面中选择框中的位置并修改HCLK(MHZ)主频为72MHz

# 2. 引脚分配与参数配置
- 在Pinout&Configuration界面选择“System Core”
- 双击“GPIO”进行配置
- 选择PB0引脚
- 配置为GPIO_Output模式

- 进入“Pinout & Configuration”标签页
- 在左侧导航栏中选择“System Core”
- 双击“GPIO”进行配置,勾选“Modified”

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

# 3. 生成代码
勾选生成单独外设文件,保存生成工程代码。

# 6.3.2 RCC配置项目软件设计
# 1. RCC初始化函数
//RCC初始化函数
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {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.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
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_2) !=
HAL_OK)
{
Error_Handler();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 2. 功能实现代码
#include"main.h"
void SystemClock_Config(void);static void MX_GPIO_Init(void);
int main(void){
HAL_Init();//初始化HAL库
SystemClock_Config();//配置系统时钟
MX_GPIO_Init();//初始化GPIO
while (1)
{
HAL_GPIO_TogglePin(LED_RED_GPIO_Port,LED_RED_Pin);
HAL_Delay(1000); // 延时
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 6.3.3 时钟树配置项目下载验证
ST-LINK下载器一端连接电脑,另一端连接至嵌入式学习板的SWD接口。随后点击“Run”按钮,将程序编译并下载至芯片。下载好代码后,看到开发板上LED灯闪烁现象。
