STM32CubeMX时钟树配置详解(F103)

外部时钟配置 

学习时使用的是stm32f103系列芯片,文档的时钟树属实不适合新手阅读,STM32cube的功能很强大,时钟树清晰明了:

首先我们要知道,芯片需要一个频率来进行工作,通常选用的是晶振来提供工作频率,很显然不在芯片内部,是外部时钟源。在上图中,我们仅需要关注蓝色框部分,这里我们使用的是HSE时钟源(High Speed Extern--高速外部时钟),根据左边input frequency可知,输入频率设置为8Mhz。这里有同学可能会去想,为什么LSE时钟源是灰色的,因为在这里没有使能LSE低速外部时钟。在这里可以清楚看到LSE是给RTC和IWDG提供时钟频率的,我们没有使用这两个外设,因此我们不需要去配置

RCC配置如下:

 系统时钟配置

 由上图可知,系统时钟的来源有三个,分别是PLLCLK、HSE、HSI。pll是预分频器,我们勾选的是PLLCLK,因为可以让我们的输出频率达到最大,可以直接设置系统时钟为72MHz。

*注:我们通常不使用HSI(芯片内部时钟源),因为HSI(高速内部时钟信号)根据温度和环境的情况频率会飘逸不稳定。

外设时钟配置

 原理和前面一样,但是注意两点,APB1、APB2时钟的时钟频率有限制,PCLK1是低速时钟,最大频率为36MHz,PCLK2是高速时钟,最大频率为72MHz。

### 使用 STM32CubeMX 配置 STM32 实时时钟 (RTC) #### 1. 启用 RTC 功能 为了启用 STM32 的 RTC 模块,在 STM32CubeMX 中打开项目并进入 `Clock Configuration` 页面。确保启用了外部低速时钟(LSE),因为这是驱动 RTC 常见的选择之一[^1]。 ```c // RCC_OscInitTypeDef 结构体定义了要配置的振荡器属性. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; // 不涉及PLL设置 RCC_OscInitStruct.LSEOscillatorMode = RCC_LSE_ON; if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){ Error_Handler(); } ``` #### 2. 设置 RTC 时钟源 继续在同一个页面上操作,选择 RTC 的时钟源为 LSE 或者其他可用选项如 HSI 分频后的信号等。这一步骤决定了 RTC 将依赖哪个时钟来保持时间准确性[^3]。 #### 3. 初始化 RTC 参数 转到 `Pinout & Configuration` 标签页下的 `Peripherals -> RTC` 节点,这里可以进一步调整 RTC 的工作模式和其他参数。例如设定预分频系数以获得所需的秒脉冲频率[^4]。 ```c RTC_TimeStruct.TimeFormat = RTC_HOURFORMAT_24; RTC_DateStruct.WeekDay = RTC_WEEKDAY_MONDAY; HAL_RTC_Init(&hrtc); HAL_RTC_SetTime(&hrtc, &RTC_TimeStruct, RTC_FORMAT_BIN); HAL_RTC_SetDate(&hrtc, &RTC_DateStruct, RTC_FORMAT_BIN); ``` #### 4. 生成功成代码框架 完成上述硬件层面的配置之后,点击 `Project Manager` 下方的按钮生成功能函数以及必要的头文件和库文件。这些自动生成的部分包含了初始化外设所需的一切指令,简化了后续编程过程[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值