STM32F1时钟系统

前言:从学校毕业出来差不多一年多了,第一份工作历经周折多次换岗,功夫不负有心人,终于算从事了一份自己目前所喜欢的工作:mcu软件助理工程师。在边工作,边学习的鞭策下希望用文字来记录自己的一些学习心得,或许能帮助到需要帮助的人,也让自己对学习的东西有所总结。

这篇博客主要是讲解我学习STM32F1时钟系统部分知识的一些总结。

一、STM32F10xx时钟系统框图及说明(此图摘自正点原子)

二、对框图的一些理解

①5个时钟源:HSE(高速外部时钟)、HSI(高速内部时钟)、LSE(低速外部时钟)、LSI(低速内部时钟)、PLL(锁相环倍频输出)

②IWDGCLK(独立看门狗时钟):来自LSI(低速内部时钟),约40KHz。

③RTCCLK(RTC实时时钟):项目中一般是使用LSE(低速外部时钟),32.768KHz。

④USBCLK(USB时钟):来自PLLCLK,有一个预分频器USB Prescaler,最终48MHz。

⑤一般情况下PLLCLK = SYSCLK(系统时钟);HCLK = SYSCLK;PCLK1 = SYSCLK \ 2;PCLK2 = SYSCLK。

三、额外讲解

时钟的初始化在SystemInit()函数中,此函数在System_stm32f10xx.c源文件中定义,在启动文件中有调用,如果需要修改配置,可在源文件中改,一般情况下不做修改,直接使用就好了,重在理解其原理。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于STM32F1系列微控制器,配置系统时钟可以按照以下步骤进行: 1. 首先,需要打开RCC(Reset and Clock Control)模块的时钟使能。 ```c RCC->CR |= RCC_CR_HSEON; // 打开外部高速时钟(如果使用外部晶体) RCC->CR |= RCC_CR_HSION; // 打开内部高速时钟 ``` 2. 等待时钟稳定。根据需要选择使用外部晶体还是内部高速时钟,等待时钟稳定的时间不同。例如,如果使用外部晶体,则等待HSE稳定: ```c while (!(RCC->CR & RCC_CR_HSERDY)); // 等待HSE稳定 ``` 3. 配置时钟分频器。根据需要配置系统时钟频率和总线时钟频率。 ```c // 选择系统时钟源和分频系数 RCC->CFGR |= RCC_CFGR_SW_0; // 使用SYSCLK = HSI RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB时钟不分频 RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; // APB1时钟分频为2(可根据需要调整) RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2时钟不分频 // 更新时钟设置 RCC->CR |= RCC_CR_PLLON; // 打开PLL(可选,如果需要使用PLL时钟源) while (!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定 // 选择PLL作为系统时钟源 RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; ``` 4. 等待系统时钟稳定。 ```c while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待PLL作为系统时钟源 ``` 这些是配置STM32F1系列微控制器系统时钟的基本步骤。你可以根据具体的需求进行修改和扩展。希望能对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值