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

前言

代码生成软件:STM32CubeMX

开发板:robomaster C型开发板(STM32F407IGH6)

 一、时钟配置

1 芯片选择

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

2 SYS配置

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

 3 RCC配置

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

4 时钟树配置

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

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

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

  • 由外部晶振或振荡器提供的高速时钟信号,通常频率在4MHz到26MHz之间。
  • 通过外部引脚(HSE晶振引脚)输入,常用作系统时钟的源。
  • 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的数据手册中可以找到。数据手册官网可查。

    配置时需注意的事项

    1. 时钟频率限制

    2. Cortex-M4最大时钟频率为168MHz。
    3. 注意AHB和APB频率不能超过芯片规格的限制。
    4. 时钟源优先级

    5. HSE通常优先于HSI。
    6. 如果使用PLL,确保PLL输入频率和输出频率在规定范围内。
    7. 备份时钟

    8. 如果主时钟失效(如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。

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

    作者:no-error

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32初学之时钟配置及项目生成(STM32CubeMX)

    发表回复