记录正点原子对STM32F407的时钟配置

在此记录下正点原子对于STM32F407的底层配置,加深印象。

正点原子并没有使用官方的库函数进行操作,而是采用宏定义+直接寄存器的操作方式。

首先

  /* Enable HSE */
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

然后等待配置完成,进行电源接口使能和电源复位后默认值设置

    /* Select regulator voltage output Scale 1 mode */
    RCC->APB1ENR |= RCC_APB1ENR_PWREN;
    PWR->CR |= PWR_CR_VOS;

再然后设置HCLK

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

再然后设置内部高速时钟和低速时钟

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

然后设置PLL

    /* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

包括使能USB时钟源、PLL的输入时钟为HSE、然后采取PLLM分频,然后PLLN倍频,再PLLP分频。外部晶振是8M,经过一系列操作,使得系统时钟为168M。

再然后打开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;

截止此处,系统时钟配置完成。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值