日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]上次了解了STM32F4時鐘系統(tǒng)中PLL的基本狀況, 現(xiàn)在我打算自已動手配置一下STM32的時鐘, 使用PLL將STM32F429的主頻倍到168MHz去, Let’s go.名詞注解:RCC: Reset Clock Config, 復(fù)位時鐘配置.下面直接上代碼, 但有有一

上次了解了STM32F4時鐘系統(tǒng)中PLL的基本狀況, 現(xiàn)在我打算自已動手配置一下STM32的時鐘, 使用PLL將STM32F429的主頻倍到168MHz去, Let’s go.

名詞注解:
RCC: Reset Clock Config, 復(fù)位時鐘配置.

下面直接上代碼, 但有有一點(diǎn)要注意:在使能PLL之前PLL所有的參數(shù)都要配置完畢, 等PLL使能后PLL是不可以再進(jìn)行配置的.

代碼:

void RCC_Config(void)

{

ErrorStatus status = ERROR;

// 復(fù)位RCC寄存器

RCC_DeInit();

// 打開外部高速晶振

RCC_HSEConfig(RCC_HSE_ON);

// 等待高速晶振穩(wěn)定

status = RCC_WaitForHSEStartUp();

if (status == SUCCESS)

{

// 使能flash緩存預(yù)讀取

FLASH_PrefetchBufferCmd(ENABLE);

// 在STM32F42xxx和STM32F43xxx中, 這個值與電壓和主頻都有關(guān)系.

// 當(dāng)電壓在2.7-3.6V, 150 < HCLK <= 180MHz時, 為5個WS

FLASH_SetLatency(FLASH_Latency_5);

// 配置PLL, SYSCLK = 168MHz

RCC_PLLConfig(RCC_PLLSource_HSE, 2, 84, 2, 7);

// 使能PLL

RCC_PLLCmd(ENABLE);

// 等待PLL穩(wěn)定

while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

// 設(shè)置PLL為系統(tǒng)時鐘

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

// 等待PLL被用于系統(tǒng)時鐘

while (RCC_GetSYSCLKSource() != 0x08);

}

else

{

// HSE啟動失敗, 死循環(huán)

while (1);

}

return;

}

使用以上代碼就可以使用PLL將主頻倍到168MHz去了, RCC_PLLConfig(RCC_PLLSource_HSE, 2, 84, 2, 7)這個函數(shù)中的參數(shù)怎么計算可以參照上一節(jié), 在這里不再多說.
接下來就是相應(yīng)外設(shè)時鐘的配置, 建議在相應(yīng)的外設(shè)初始化中配置即可. 不同的外設(shè)屬于不同的總線, 在使用外設(shè)前記得配置對應(yīng)的時鐘.
在RCC初始化中調(diào)用了兩個FLASH相關(guān)的函數(shù), 這里說一下是怎么回事.

ARM的大部分指令可以在一個時鐘周期中執(zhí)行完成, 當(dāng)CPU主頻為168MHz時, 指令周期大約為6us, 但是Flash的讀取時間大約為35us, 這樣就帶來一個矛盾, CPU執(zhí)行速度太快, 指令來不及從Flash讀取. 為了使CPU能全速運(yùn)行, Flash控制器使用了一個128位的指令預(yù)讀緩沖器, 可存儲4條32位指令或者8條16位指令. FLASH_PrefetchBufferCmd(ENABLE)指令用來使能這個緩存區(qū),需要注意的是當(dāng)電壓低于2.1V時緩存區(qū)必須禁用掉(RM0090 P80). FLASH_SetLatency(FLASH_Latency_5)設(shè)置Flash預(yù)讀緩存所需要的等待狀態(tài), 這個值與CPU的主頻和電壓均有關(guān)系, 具體可以參考數(shù)據(jù)手冊, 對于STM32F42xxx和STM32F43xxx, 主頻在150M到180M之間時, 需要5個等待狀態(tài)(Wait states), 為6個CPU周期.


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉