STM32F407 主频时钟源配置成HSI

本文详细介绍了STM32微控制器中HSI振荡器的倍频设置与PLL锁相环的配置过程,通过代码示例展示了如何初始化时钟源,调整AHB、APB2和APB1总线的时钟频率,以及如何从HSI切换到PLL作为系统时钟源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void system_user()   //HSI 倍频函数
{
            RCC_DeInit();        //恢复系统默认时钟源  HSI  16M
            RCC_HSICmd(ENABLE);  //使能HSI  16MHZ
            while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) ==RESET) ;  //等待 HSI稳定

            // 调压器电压输出级别配置为1,以便在器件为最大频率
            // 工作时使性能和功耗实现平衡
            RCC->APB1ENR |= RCC_APB1ENR_PWREN;
            PWR->CR |= PWR_CR_VOS;
    
            // HCLK = SYSCLK / 1
            RCC_HCLKConfig(RCC_SYSCLK_Div1);    //AHB = 系统时钟
            // PCLK2 = HCLK / 2
            RCC_PCLK2Config(RCC_HCLK_Div2);     //高速,APB2 = AHB/2
            // PCLK1 = HCLK / 4
            RCC_PCLK1Config(RCC_HCLK_Div4);        //低速,APB1 = AHB/4
    
        RCC_PLLCmd(DISABLE);
        //              时钟源          分频因子,倍频因子,pll
        RCC_PLLConfig(RCC_PLLSource_HSI, 16, 336, 2, 7);

            // 使能PLL
            RCC_PLLCmd(ENABLE);
      while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);   //等待pll稳定
            
            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     //选择PLL作为系统时钟源
            while (RCC_GetSYSCLKSource() != 0x08);   // 
}

 

///////////在主函数中打印出参数

    printf("RCC_GetSYSCLKSource = %d\n",RCC_GetSYSCLKSource());
    RCC_GetClocksFreq(&RCC_clock);
    printf("SYSCLK = %d \n",RCC_clock.SYSCLK_Frequency);
    printf("HCLK = %d \n",RCC_clock.HCLK_Frequency);
    printf("PCLK2 = %d \n",RCC_clock.PCLK2_Frequency);
    printf("PCLK1 = %d \n",RCC_clock.PCLK1_Frequency);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值