STM32F4XX - 总线时钟设置

STM32 接触时间较短,记录下,以防忘记
-上电第一步需要设置时钟。下面介绍的几个是设置对象。

HSE: 外接晶振频率.如STM32F407涉及电路中使用的是8MHz。
在这里插入图片描述SYSCLK: 系统时钟,通过对HSE时钟进行倍频后得到。倍频方法就是设置寄存器。方法存在于(USER/system_stm32f4xx.c)SetSysClock函数中。

    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |                                                                
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

举例子说明:

  1. 如上硬件晶振时钟频率为8MHz 即HSE 值为8M
  2. 文件中定义如下:
    #define PLL_M 8
    #define PLL_N 336
    #define PLL_P 2
  3. 公式如下:
    PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
    SYSCLK = PLL_VCO / PLL_P
  4. 计算出SYSCLK 值为168MHz

HCLK: AHB总线时钟,由SYSCLK分频得到。如:

RCC->CFGR |= RCC_CFGR_HPRE_DIV1;   /* HCLK = SYSCLK / 1*/ 

PCLK1: APB1总线时钟,由HCLK分频得到。如:

RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;; /* PCLK2 = HCLK / 4*/

PCLK2: APB2总线时钟,由HCLK分频得到。如:

RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK2 = HCLK / 2*/

最终时钟计算结果如下:

HSESYSCLKHCLKPCLK1PCLK2
8M168M168M42M84M

在上面对应的值设置完成后,使能PLL。

    /* Enable the main PLL */
    RCC->CR |= RCC_CR_PLLON;

并且选择PLL作为系统时钟。

    /* Select the main PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= RCC_CFGR_SW_PLL;

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值