stm32修改系统时钟经验

        在使用stm32开发的过程中,有时需要手动修改系统时钟参数,使板子上的晶振和目标系统时钟匹配。在此记录一下对时钟配置代码的理解。

一. STM32F4xx更换外部晶振(或修改系统时钟)

1.需要修改的文件:

        system_stm32f4xx.c、stm32f4xx.h

2.计算系统时钟的方法(F40x系统时钟通常是168M):

        PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N;

        SYSCLK = PLL_VCO / PLL_P;

3.例子:外部晶振由8M改成25M,F4需要的操作:

       1) stm32f4xx.h中,HSE_VALUE 由8改成25;

        2)system_stm32f4xx.c中,的PLL_M由8改成25;

4.修改系统时钟:

        system_stm32f4xx.c中,修改系统时钟的值:

        uint32_t SystemCoreClock    = 48000000;

二. STM32F0xx更换外部晶振(或修改系统时钟)

1. 手动匹配外部晶振的频率:

        stm32f0xx.h中,HSE_VALUE 由8000000改成12000000;

2. 修改SetSysClock() 函数:

        在system_stm32f4xx.c,SetSysClock函数中修改倍频(RCC_CFGR_PLLMULL6 = 6倍频,改成RCC_CFGR_PLLMULL4):

    /* PLL configuration = HSE * 6 = 48 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));

    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);

3.修改系统时钟:

        system_stm32f4xx.c中,修改系统时钟的值:

        uint32_t SystemCoreClock    = 48000000;

注意:

        如果要设置分频参数,可能要自己添加代码(库函数可能会用默认不分频),这时设置CFGR2寄存器时,要注意一个寄存器位:

也就是CFGR寄存器的bit17和PREDIV[0]是同一个位,如果清零CFGR寄存器的bit17,PREDIV[0]也同时被清零;因此如果需要修改分频参数,建议放在设置PLL倍频参数之后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值