问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32初学之时钟配置及项目生成(STM32CubeMX)

创作时间:
作者:
@小白创作中心

STM32初学之时钟配置及项目生成(STM32CubeMX)

引用
CSDN
1.
https://blog.csdn.net/m0_60217329/article/details/144063503

本文将详细介绍如何使用STM32CubeMX软件进行STM32时钟配置及项目生成。文章以robomaster C型开发板(STM32F407IGH6)为例,从芯片选择、SYS配置、RCC配置到时钟树配置,再到项目生成的完整流程,适合初学者学习和参考。

前言

代码生成软件:STM32CubeMX
开发板:robomaster C型开发板(STM32F407IGH6)

一、时钟配置

芯片选择

打开STM32CubeMX,选择自己的芯片版本,这里以STM32F407IGH6为例。

SYS配置

在SYS中配置使用SWD调试,在Debug选择Serial Wire。

RCC配置

在RCC中设置HSE为Crystal/Ceramic Resonator,使用高速外部时钟。

时钟树配置

时钟树整体配置如下图,下边详细介绍个部分的含义。

上图中1、2、3、4分别表示低速外部时钟、低速内部时钟、高速内部时钟、高速外部时钟。

  • HSE(High-Speed External Clock,高速外部时钟)

  • 由外部晶振或振荡器提供的高速时钟信号,通常频率在4MHz到26MHz之间。

  • 通过外部引脚(HSE晶振引脚)输入,常用作系统时钟的源。

  • HSI(High-Speed Internal Clock,高速内部时钟)

  • STM32内部提供的一个固定频率的高速时钟,频率通常为16MHz。

  • 精度较低,一般用于不需要高精度的场景,如调试或简单任务。

  • LSE(Low-Speed External Clock,低速外部时钟)

  • 用于低功耗和实时操作的外部低速晶振,通常为32.768kHz。

  • 主要用于RTC(实时时钟)模块。

  • LSI(Low-Speed Internal Clock,低速内部时钟)

  • 固定频率(典型值为32kHz)的内部低速时钟。

  • 低功耗应用中可用于唤醒或者RTC。

上图中5、6、7、8分别表示PLL_M、PLL_N、PLL_P、PLL_Q。

  • PLL(Phase-Locked Loop,相位锁定环路)
  • 用于生成更高频率的系统时钟,通过输入一个基础时钟(HSE或HSI),经过倍频和分频输出。
  • PLL Source: PLL的输入源,可以选择HSE或HSI。
  • PLL_M: 输入时钟的分频系数(1到63)。
  • PLL_N: 倍频系数(50到432)。
  • PLL_P: 主系统时钟分频系数(2、4、6或8),生成系统时钟(SYSCLK)。
  • PLL_Q: 用于生成USB、SDIO和随机数发生器时钟。

计算公式:
FPLLCLK=(Finput×PLLN)/(PLLM×PLLP)

10为系统时钟

  • System Clock (SYSCLK) 系统时钟
  • MCU的主时钟,驱动整个芯片的核心(Cortex-M4)以及大部分外设。
  • SYSCLK可以由HSE、HSI或PLL输出选择。

11为用于生成USB、SDIO、随机数发生器的时钟

  • USB模块需要一个精确的48MHz时钟。
  • SDIO接口(用于SD卡通信)和随机数发生器(RNG)也依赖这一路时钟。
  • 确保分频后的结果为48MHz,否则USB、SDIO或RNG可能无法正常工作。

也可在指定的时钟位置输入时钟频率,按下回车或者点击上方的“Resolve Clock Issues”选项,是系统自动配置相关参数。

最常用的时钟是APB时钟

  • STM32有两个APB时钟域:APB1(低速外设)和APB2(高速外设)。
  • AHB时钟通过APB预分频器(APB Prescaler)生成APB1和APB2时钟。
  • APB1最大频率:42MHz
  • APB2最大频率:84MHz
  • 影响外设如UART、SPI、I2C、TIM等。

下图为外设在时钟总线上的挂载图。在使用相关外设时,通过此图配置相应的时钟频率。该图在MCU的数据手册中可以找到。数据手册官网可查。

配置时需注意的事项

时钟频率限制

  • Cortex-M4最大时钟频率为168MHz。
  • 注意AHB和APB频率不能超过芯片规格的限制。

时钟源优先级

  • HSE通常优先于HSI。
  • 如果使用PLL,确保PLL输入频率和输出频率在规定范围内。

备份时钟

  • 如果主时钟失效(如HSE晶振故障),系统可以自动切换到备用时钟(HSI)。

二、项目生成

选择Project Manager选项卡,在Project中为项目命名,然后选择项目文件夹放置的位置。之后注意选择合适的IDE。本人使用的是CLion开发环境,选择STM32CubeIDE,如果使用的是Keil开发环境选择MDK-ARM IDE。

然后在Code Generator中勾选Generate peripheral initialization as a pair of '.c/.h' files per peripheral,生成单独的.c/.h文件。然后点击GENERATE CODE。

出现下图所示对话框,说明项目生成完成

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号