新聞中心

        STM32之RCC

        作者: 時間:2016-11-17 來源:網絡 收藏
        STM32 RCC復位與時鐘配置,我首先忽略掉復位,首先學習時鐘配置,復位以后用到再學習

        本文引用地址:http://www.104case.com/article/201611/315412.htm

        STM32有多個時鐘源,分別是

        HSI:上電默認啟動,因精度不高所以先不采用,以后如果需要再使用

        HSE:外部高速時鐘,系統時鐘一般采用它,經過PLL倍頻作為系統同時鐘

        LSE:外部低速時鐘,一般專門用于RTC,等到RTC模塊時再使用

        LSI:內部低速時鐘,精度不高,一般用于IWDGCLK

        時鐘系統框圖如下:

        STM32中各個模塊都有自己的時鐘,當使用相應的模塊時首先記得把此模塊時鐘開啟

        本次學習使用標準固件庫3.3.0

        好了,看明白上圖咱就開始吧:

        void RCC_Configuration(void)
        {
        ErrorStatus HSEStartUpStatus;
        //SystemInit();//完全可以使用此函數配置,但是為了學習咱先不用
        RCC_DeInit();//復位RCC模塊的寄存器,復位成缺省值
        RCC_HSEConfig(RCC_HSE_ON); //開啟HSE時鐘,咱是用HSE的時鐘作為PLL的時鐘源
        HSEStartUpStatus = RCC_WaitForHSEStartUp();//獲取HSE啟動狀態

        if(HSEStartUpStatus == SUCCESS)//如果HSE啟動成功
        {
        FLASH_PrefetchBufferCmd(ENABLE);//開啟FLASH的預取功能
        FLASH_SetLatency(FLASH_Latency_2); //FLASH延遲2個周期(這里我也不明白,先用吧)

        RCC_HCLKConfig(RCC_SYSCLK_Div1); //配置HCLK,PCLK2,PCLK1,PLL
        RCC_PCLK2Config(RCC_HCLK_Div1);
        RCC_PCLK1Config(RCC_HCLK_Div2);

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
        RCC_PLLCmd(ENABLE);//啟動PLL
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

        {}//等待PLL啟動完成
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //配置系統時鐘
        while(RCC_GetSYSCLKSource() !=0x80) //檢查是否將HSE 9倍頻后作為系統時鐘

        {}
        }

        }

        設置時鐘流程:

        1.將RCC寄存器重新設置為默認值 RCC_DeInit

        2.打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);

        3.等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();

        4.設置AHB時鐘 RCC_HCLKConfig;

        5.設置高速APB2時鐘RCC_PCLK2Config;

        6.設置低速速APB1時鐘RCC_PCLK1Config

        7.設置PLL RCC_PLLConfig

        8.打開PLL RCC_PLLCmd(ENABLE);

        9.等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

        10.設置系統時鐘 RCC_SYSCLKConfig

        11.判斷是否PLL是系統時鐘 while(RCC_GetSYSCLKSource() != 0x08)

        12.打開要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

        至此我們就將STM32的系統時鐘配置好了,系統時鐘72MHz,APH 72MHz,APB2 72MHz,APB1 32MHz,USB 48MHz

        其他至于ADC什么的先用不管,用到時再設置,本次只是大體先熟悉下STM32的時鐘配置流程,便于以后程序的編寫



        關鍵詞: STM32RC

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄂尔多斯市| 赣州市| 宜都市| 阿瓦提县| 会昌县| 陕西省| 宽城| 寿宁县| 慈利县| 礼泉县| 千阳县| 遵义县| 赤水市| 富宁县| 罗定市| 台前县| 宝清县| 星座| 镇远县| 曲阜市| 东方市| 张家界市| 海伦市| 大兴区| 宁陵县| 庄浪县| 广州市| 大埔区| 金溪县| 梓潼县| 满洲里市| 家居| 依兰县| 柳江县| 开江县| 灵武市| 大关县| 六盘水市| 安顺市| 腾冲县| 临湘市|