在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32F103x RCC寄存器配置

            STM32F103x RCC寄存器配置

            作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
            rccresetandclockcontrol 復位及時鐘控制

            本文引用地址:http://www.biyoush.com/article/201611/317023.htm

            主要是設置時鐘樹中的內(nèi)容,如下圖所示:

            具體在RCC_Configuration函數(shù)中的體現(xiàn)。

            第一步:系統(tǒng)時鐘選擇哪個,HSE、HSI還是PLLCLK。

            RCC_HSEConfig(RCC_HSE_ON); //使用HSE

            如果HSE時鐘已經(jīng)穩(wěn)定,硬件會將RCC_CR的HSERDY位置1。

            第二步:判斷HSE時鐘是否穩(wěn)定

            if(RCC_WaitForHSEStartUp()==SUCCESS)

            第三步:使能FLASH的預取址緩沖區(qū),并設置FLASH的等待狀態(tài)。(具體功能見FLASH部分)

            /*EnablePrefetchBuffer*/

            FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

            /*Flash2waitstate*/

            FLASH_SetLatency(FLASH_Latency_2);

            第四步:設置AHB預分頻系數(shù)。預分頻系數(shù)可以是1、2、4、8、16、32、64、128、256

            /*HCLK=SYSCLK*/

            RCC_HCLKConfig(RCC_SYSCLK_Div1);//沒分頻

            第五步:設置APB2的預分頻系數(shù),來確定PCLK2頻率。預分頻系數(shù)可以是1、2、4、8、16

            /*PCLK2=HCLK*/

            RCC_PCLK2Config(RCC_HCLK_Div1);//沒分頻

            第六步:設置APB1的預分頻系數(shù),來確定PCLK1頻率。預分頻系數(shù)可以是1、2、4、8、16

            /*PCLK1=HCLK/2*/

            RCC_PCLK1Config(RCC_HCLK_Div2);//2分頻

            第七步:設置PLL的時鐘源,以及PLL的倍頻系數(shù),來確定PLLCLK頻率。

            /*PLLCLK=8MHz*9=72MHz*/

            RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

            第八步:使能PLL。將RCC_CR的PLLON位置1。

            /*EnablePLL*/

            RCC_PLLCmd(ENABLE);

            如果PLL鎖定后,硬件會將RCC_CR的PLLRDY位置1。

            第九步:等待PLL鎖定。

            /*WaittillPLLisready*/

            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}

            第十步:選擇PLL作為SYSCLK(系統(tǒng)時鐘源)

            /*SelectPLLassystemclocksource*/

            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

            第十一步:將程序中用到的外設時鐘打開,統(tǒng)一都放在此處。

            例如:將GPIO外設時鐘打開。

            /* Enable GPIOC clock */
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

            RCC_Configuration函數(shù)具體代碼如下:

            /*******************************************************************************
            * Function Name : RCC_Configuration
            * Description : Configures the different system clocks.
            * Input : None

            * Return : None
            *******************************************************************************/
            void RCC_Configuration(void)
            {
            ErrorStatus HSEStartUpStatus;

            /* RCC system reset(for debug purpose) */
            RCC_DeInit();

            /* Enable HSE */
            RCC_HSEConfig(RCC_HSE_ON);

            /* Wait till HSE is ready */
            HSEStartUpStatus = RCC_WaitForHSEStartUp();

            if(HSEStartUpStatus == SUCCESS)
            {
            /* Enable Prefetch Buffer */
            FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

            /* Flash 2 wait state */
            FLASH_SetLatency(FLASH_Latency_2);

            /* HCLK = SYSCLK */
            RCC_HCLKConfig(RCC_SYSCLK_Div1);

            /* PCLK2 = HCLK */
            RCC_PCLK2Config(RCC_HCLK_Div1);

            /* PCLK1 = HCLK/2 */
            RCC_PCLK1Config(RCC_HCLK_Div2);

            /* PLLCLK = 8MHz * 9 = 72 MHz */
            RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

            /* Enable PLL */
            RCC_PLLCmd(ENABLE);

            /* Wait till PLL is ready */
            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}

            /* Select PLL as system clock source */
            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

            /* Wait till PLL is used as system clock source */
            while(RCC_GetSYSCLKSource() != 0x08) {}

            /* Enable GPIOC clock */
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
            }
            }



            評論


            技術專區(qū)

            關閉