STM32 12Mにデフォルトの方法8Mを変更するためのライブラリsystemInitの水晶発振器

この記事は、kNの魏の将軍から再生された 「外部水晶クロックSTM32の変更を構成する方法」
STM32デフォルトのライブラリがケース8M外部水晶で実装されているので、周波数を含む8Mにより、シリアルポートのボーレートを設定するための時間です。
外部水晶12M場合、クロック72MHZに配置されました 

1)PLL周波数 そのようなAの変化:
8N:
RCC-> CFGR | =(のuint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); // 8 * 9 = 72
12M:
RCC-> CFGR | =(のuint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); // 12 * 6 = 72
ライブラリ機能:無効RCC_PLLConfig(RCC_PLLSourceのuint32_t、RCC_PLLMulのuint32_t)
例:RCC_PLLConfig(RCC_PLLSource_HSE_Div1、RCC_PLLMul_6)。

2)stm32f10x.h日時:
8N:
#define HSE_Value((のuint32_t)8000000)/ * <ヘルツでの外部発振器の値* /! 
12M:
#define HSE_Value((のuint32_t)12000000)/ *!<ヘルツでの外部発振器の値* /


そして、内部クロックの話を、内部クロックがRC発振器の精度によって生成さは高くありません。電力が小さく、内部クロックによって生成され、また、次のようにプログラムが構成され、PCBスペースを節約します。
空RCC_Configuration(無効)
{
        (デバッグ目的のために)/ * RCCのシステムリセット* /
        RCC_DeInit();

        RCC_HSICmd(ENABLE); //内部高速クロックを開きます
        // HSIの準備ができて待って
        一方、(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET)。

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //オープンFLASHのプリフェッチ機能
        // FLASHタイミング制御
        //推奨:SYSCLK = 0〜24MHzのレイテンシ= 0
        // SYSCLK = 24〜48MHzのレイテンシ= 1
        // SYSCLK = 48〜72MHzレイテンシ= 2
        FLASH_SetLatency(FLASH_Latency_2)。
        RCC_HCLKConfig(RCC_SYSCLK_Div1); //セットHCLK(AHBクロック)= SYSCLK
        RCC_PCLK2Config(RCC_HCLK_Div1)。// PCLK2(APB2)= HCLK
        RCC_PCLK1Config(RCC_HCLK_Div1);                //PCLK1(APB1) = HCLK

        //PLL设置 SYSCLK/2 * 12 = 4*12 = 48MHz
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
        //启动PLL
        RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,不能被DISABLE
        //等待PLL稳定
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){;}

        //设置系统时钟SYSCLK = PLL输出
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        //等待PLL成功用作于系统时钟的时钟源,并等待稳定
        // 0x00:HSI作为系统时钟
        // 0x04:HSE作为系统时钟
        // 0x08:PLL作为系统时钟
        while(RCC_GetSYSCLKSource() != 0x08);
}
还有如果修给了 HSE_Value ,但是还有问题,则库文件使用的是LIB文件,而不是C文件。现在看来是stm32f10x_rcc.c转LIB时的问题。它里面把HSE_VALUE编译成死的了,不跟头文件走。
所以,如果库文件使用的是LIB文件,那么改晶振频率后就需要把stm32f10x_rcc.c加到工程里一起编译。
发布了18 篇原创文章 · 获赞 86 · 访问量 16万+

おすすめ

転載: blog.csdn.net/u013178472/article/details/76307107