STM32CubeMX配置STM32F103外部时钟源

1.硬件配置介绍

使用的是正点原子的精英STM32F103开发板,型号为STM32F103ZET6。
该开发板的HSE外接的时钟是8M的晶振;

LSE外接的是频率为 32.768kHz 的石英晶体,这个主要是 RTC 的时钟源。

2.STM32CubeMx配置时钟源

打开CubeMx后,默认配置大致如下图所示:

可以看到,默认在时钟源配置界面并不能进行设置HSE和LSE,需要在Pinout&Configuration界面的RCC中使能对应的高低速时钟配置,如下图所示:

高速和低速配置均有三个选项:

 直接选第三个即可,第二个BYPASS Clock Source是旁路时钟源,指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号,使用外部晶振时不能选择旁路时钟源。

将高速和低速的都选择Crystal/Ceramic Resonator后,切换到时钟配置界面,如下:

发现HSE可以选择外部时钟源了,但LSE仍然不能选择,因为LSE主要是给RTC用的,所以是不是还需要配置RTC使能呢?

重新在Pinout&Configuration界面使能RTC,勾选activate clock source即可,其他无改动:

 再切换到时钟配置界面,发现可以对LSE进行配置了,将HSE和LSE配置,其他参数默认即可,暂时不需要调节时钟频率,重新生成代码即可。

 


 

### 配置 STM32F103C8T6 使用 STM32CubeMX 的方法 STM32CubeMX 是一款功能强大的图形化工具,用于初始化和配置基于 ARM Cortex-M 架构的 STM32 微控制器。以下是关于如何使用 STM32CubeMX配置 STM32F103C8T6 的相关内容。 #### 1. 创建新项目并选择目标设备 启动 STM32CubeMX 后,在初始界面中点击 **New Project** 按钮。随后会弹出一个窗口供用户选择具体的微控制器型号。对于 STM32F103C8T6,可以在搜索框输入其名称来快速定位该器件[^1]。 #### 2. 设置时钟树 (Clock Setup) 进入主界面后,切换到 **Clock Configuration** 标签页。在这里可以调整系统时钟源以及各个外设的工作频率。通常情况下,默认设置可能已经满足大多数应用需求;然而为了获得最佳性能或者特定的功能支持,则需手动修改 PLL 参数等相关选项以达到预期效果[^2]。 ```c // 示例代码展示如何通过 HAL 库启用 HSE 并配置 SYSCLK void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /** Initializes the CPU, AHB and APB buses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; // Adjust as needed RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; // Adjust as needed 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,HSE_STARTUP_TIMEOUT)!=HAL_OK){ Error_Handler(); } } ``` #### 3. 定义引脚分配 (Pin Settings) 转至 **Pinout & Configuration** 页面,可以看到整个芯片的所有可用 GPIO 引脚布局图。双击某个具体引脚即可更改它的模式(例如推挽输出、开漏输入等),也可以将其关联到某些硬件外设上如 USART、SPI 或 I²C 接口等功能模块[^3]。 #### 4. 生成初始化代码 完成上述所有必要的参数设定之后,最后一步就是让软件自动生成对应平台下的驱动程序框架文件夹结构及其内部实现细节部分了。只需简单几步操作就能轻松搞定复杂繁琐的手动编码工作量! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值