打印
[其他ST产品]

STM32里面怎么配置时钟控制系统

[复制链接]
2364|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2024-1-4 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32里面怎么配置时钟控制系统

使用特权

评论回复
沙发
linfelix| | 2024-1-4 16:27 | 只看该作者
STM32提供了多种时钟源,包括高速内部时钟(HSI)、高速外部时钟(HSE)、低速内部时钟(LSI)、低速外部时钟(LSE)和锁相环(PLL)。

使用特权

评论回复
板凳
jkl21| | 2024-1-4 17:29 | 只看该作者
// 配置HSE为8MHz,PLL为72MHz
void SystemClock_Config(void)
{
    // 关闭Flash预读取
    FLASH->ACR &= ~FLASH_ACR_PRFTBE;

    // 关闭HSI
    RCC->CR &= ~RCC_CR_HSION;

    // 配置HSE
    RCC->CR |= RCC_CR_HSEON;
    while (!(RCC->CR & RCC_CR_HSERDY)) {}

    // 配置预分频器
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_HPRE) | RCC_CFGR_HPRE_DIV1;
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PPRE1) | RCC_CFGR_PPRE1_DIV2;
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PPRE2) | RCC_CFGR_PPRE2_DIV1;

    // 配置PLL
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PLLSRC) | RCC_CFGR_PLLSRC_HSE;
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PLLMUL) | RCC_CFGR_PLLMUL_9;
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PLLDIV) | RCC_CFGR_PLLDIV_2;

    // 使能PLL
    RCC->CR |= RCC_CR_PLLON;
    while (!(RCC->CR & RCC_CR_PLLRDY)) {}

    // 选择PLL作为系统时钟源
    RCC->CFGR |= RCC_CFGR_SW_PLL;
}

使用特权

评论回复
地板
robertesth| | 2024-1-4 17:59 | 只看该作者
时钟监视系统可以自动检测时钟源的状态,并在发生故障时切换到备用时钟源。

使用特权

评论回复
5
claretttt| | 2024-1-5 09:42 | 只看该作者
首先,确保已经使能了所需的外设时钟。例如,如果使用RTC,可以通过RCC_APB1PeriphClockCmd函数来使能RTC外设时钟。
选择适当的时钟源。这取决于您的应用需求和硬件配置。
配置PLL或其他时钟源以满足系统的需求。
使用库函数SetSysClock()来设置系统时钟。
根据需要,可以进行更高级的配置,例如调整时钟分频或选择特定的时钟线路。

使用特权

评论回复
6
uiint| | 2024-1-5 10:52 | 只看该作者
如果使用PLL作为时钟源,需要配置PLL的输入时钟和倍频系数。PLL可以接受HSI或HSE作为输入时钟,并可以倍频到216倍,但输出频率不能超过72MHz。

使用特权

评论回复
7
jobszheng| | 2024-1-5 14:33 | 只看该作者
我一般是参考STM32CubeMx生成的代码来处理

使用特权

评论回复
8
probedog| | 2024-1-5 15:18 | 只看该作者
建议查阅相关的STM32数据手册或参考手册

使用特权

评论回复
9
febgxu| | 2024-1-5 16:42 | 只看该作者
如果需要使用RTC时钟,可以配置LSE或HSE作为RTC时钟源,并设置相应的分频系数。

使用特权

评论回复
10
xiaoyaodz| | 2024-1-5 17:29 | 只看该作者
使用STM32CubeMX图形化配置工具,能够直观地设置各种时钟参数,并自动生成初始化代码。只需在软件界面上选择时钟源、设置PLL参数、选择系统时钟源等,然后生成工程文件,包含已配置好的时钟初始化函数。

使用特权

评论回复
11
loutin| | 2024-1-5 18:26 | 只看该作者
在STM32中,时钟配置通常通过直接操作寄存器或使用STM32CubeMX工具来完成

使用特权

评论回复
12
juliestephen| | 2024-1-5 20:07 | 只看该作者
系统时钟是STM32的核心时钟,用于驱动CPU和其他外设。系统时钟可以通过AHB分频器、APB1分频器和APB2分频器进行预分频,得到不同的时钟频率。

使用特权

评论回复
13
alvpeg| | 2024-1-6 18:16 | 只看该作者
需要配置每个外设的时钟。这通常涉及到修改外设的时钟控制寄存器

使用特权

评论回复
14
lihuami| | 2024-1-7 21:56 | 只看该作者
直接编写代码修改相关的RCC寄存器

使用特权

评论回复
15
elsaflower| | 2024-1-8 13:07 | 只看该作者
STM32微控制器的时钟系统配置涉及到多个寄存器的设置,以下是一个基本的时钟配置过程:

选择时钟源:STM32的时钟源有多种选择,包括HSI(高速内部时钟)、HSE(高速外部时钟)、LSI(低速内部时钟)、LSE(低速外部时钟)和PLL(锁相环时钟)。根据具体需求选择合适的时钟源。

配置预分频器:STM32的时钟系统中有多个预分频器,用于对时钟源进行分频,以得到不同频率的时钟输出。需要根据具体需求设置AHB、APB1和APB2的预分频器。

配置PLL:如果选择PLL作为时钟源,需要设置PLL的倍频器(PLLMUL)和分频器(PLLDIV)。PLL的计算公式为:PLLCLK = HSE / PLLDIV * PLLMUL。

使能时钟源:在配置完时钟源和预分频器后,需要使能相应的时钟源。可以通过设置RCC(复位和时钟控制)寄存器中的相关位来实现。

确认时钟配置:在使能时钟源后,需要等待一段时间,确保时钟系统稳定。可以通过查询RCC寄存器中的相关位来判断时钟系统是否稳定。

使用特权

评论回复
16
albertaabbot| | 2024-1-10 07:46 | 只看该作者
STM32的时钟控制系统配置主要涉及以下几个步骤:

配置HSE、HSI、LSE、LSI等外部晶振或振荡器。
调用SystemInit()函数进行系统初始化。
配置PLL,设置PLL的源、倍频系数等参数。
选择系统时钟源,配置总线分频数。
配置外设的时钟使能。

使用特权

评论回复
17
alvpeg| | 2024-1-10 10:25 | 只看该作者
选择系统时钟源:
STM32提供了多种时钟源,包括内部高速时钟(HSI)、内部低速时钟(LSI)、外部高速时钟(HSE)以及外部低速时钟(LSE)。根据实际需求和硬件设计选择合适的时钟源作为系统时钟。
配置晶振电路:
如果使用的是外部晶振(如HSE或LSE),确保对应的晶振和负载电容正确连接到MCU的相应引脚上。
设置PLL(锁相环):
PLL可以倍频内部或者外部时钟源来生成更高的系统时钟频率。配置PLL的分频系数、倍频系数及使能状态。
设置AHB/APB总线预分频器:
根据不同外设的需求,通过AHB和APB预分频器调整总线时钟频率,以满足各个外设的工作频率要求。
设置SYSCLK(系统时钟):
从已配置好的时钟源中选择一个作为系统的主时钟源(SYSCLK),并更新所有相关寄存器。
启用时钟:
对于每个外设,需要根据其功能需求,开启相应的时钟分支。

使用特权

评论回复
18
benjaminka| | 2024-1-10 11:42 | 只看该作者
HSE通常由外部晶振提供,频率范围通常为4MHz至25MHz。HSE可以通过PLL进行倍频,得到更高的系统时钟频率。

使用特权

评论回复
19
i1mcu| | 2024-1-10 13:08 | 只看该作者
STM32有5个时钟源,分别是高速外部时钟(HSE)、高速内部时钟(HSI)、低速外部时钟(LSE)、低速内部时钟(LSI)和锁相环时钟(PLL)。

使用特权

评论回复
20
jackcat| | 2024-1-10 15:31 | 只看该作者
需要使能你想要控制的时钟的时钟源。这可以通过修改RCC寄存器来实现。例如,如果你想使能GPIOA的时钟,你需要将RCC_APB2ENR |= (1 << 0)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

540

主题

3264

帖子

3

粉丝