乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      STM32再學(xué)習(xí)——時(shí)鐘初始化

       yezongying 2013-11-13

        STM32F系列微處理器,或者說(shuō)是Cortex-M3內(nèi)核的MCU內(nèi),都集成了一個(gè)叫PLL的東西。PLL就是鎖相回路或鎖相環(huán)(Phase Locked Loop),用來(lái)統(tǒng)一整合時(shí)脈訊號(hào),使內(nèi)存能正確的存取資料。PLL用于振蕩器中的反饋技術(shù),將外部的輸入信號(hào)與內(nèi)部的振蕩信號(hào)同步,鎖相環(huán)路的基本方框圖如下圖所示。一句話,PLL用來(lái)控制STM32F時(shí)鐘頻率的。總而言之,STM32F系列MCU使用了這個(gè)東西,而我們?cè)?em>MCU上電之后,也就要對(duì)其正確的初始化,這樣,我們才能得到我們需要的時(shí)鐘配置。

      本文引用地址:http://www.eepw.com.cn/article/182408.htm

        在ST公司的外設(shè)固件庫(kù)的示例里,對(duì)于工程項(xiàng)目文件,ST并沒(méi)有在啟動(dòng)函數(shù)main()里初始化PLL,因?yàn)槠湟呀?jīng)在硬件初始化階段完成對(duì)系統(tǒng)時(shí)鐘的配置。這樣也就帶了一個(gè)問(wèn)題,ST庫(kù)里的均使用了外設(shè)8MHz的晶振,而我們平時(shí)的項(xiàng)目就一定采用的是這個(gè)頻率,實(shí)際配置的低于8MHz,MCU不能全速運(yùn)行,高于8MHz,外設(shè)時(shí)鐘即配置失敗,甚至無(wú)法運(yùn)行。那么如何重新配置時(shí)鐘就需要我們一線的工程師們重新設(shè)計(jì)了。

        ST庫(kù)里的硬件初始化階段的代碼是用寄存器方式編寫(xiě)的,不利于我們閱讀與參考。也正是出于這個(gè)原因,小編使用庫(kù)函數(shù)重新編寫(xiě)了STM32F系統(tǒng)時(shí)鐘PLL初始化過(guò)程,與大家分享,期待共同提高與進(jìn)步。

        /*********************************************************************************************************

        ** Function name: static void SysClockInit(void)

        ** Descriptions: 配置SYSCLK, HCLK, PCLK2與PCLK1

        ** Created by: Jobs Zheng

        ** Created Date: 2013-03-06 09:35

        *********************************************************************************************************/

        static void SysClockInit(void)

        {

        RCC_DeInit();/* RCC重置 */

        RCC_HSEConfig(RCC_HSE_ON); /*(使能HSE)*/

        HSEStartUpStatus = RCC_WaitForHSEStartUp();/*(等待HSE使能結(jié)束)*/

        if (HSEStartUpStatus == SUCCESS)

        {

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        FLASH_SetLatency(FLASH_Latency_2);

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

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

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

        /* 超級(jí)重要的、需要配置的地方在這里 */

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

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* RCC_PLLSource_HSE_Div1為外置晶振的分頻系數(shù);RCC_PLLMul_9為倍頻數(shù) */

        RCC_PLLCmd(ENABLE);

        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

        {

        }

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* 選定PLL為系統(tǒng)主時(shí)鐘 */

        while(RCC_GetSYSCLKSource() != 0x08)

        {

        }

        }

        else

        { /* 配置失敗將程序停留在這里 */

        while (1)

        {

        }

        }

        }

        上述C語(yǔ)言的文件仍需要#include "stm32f10x.h"的頭文件來(lái)調(diào)用ST固件庫(kù)。

        就像ST官方說(shuō)明文檔所說(shuō),STM32F系列MCU支持4M-16MHz的外置晶振,因此,大家在沒(méi)有官方默認(rèn)的8Mhz晶振下,大可不必苦惱,只需要添加上面的這個(gè)初始化函數(shù),你就可以任意使用外置晶振了。

        祝大家工作順利,編程快樂(lè) ^_^

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多