您好,登錄后才能下訂單哦!
每次接觸一款新的單片機(jī),我都會(huì)很好奇該單片機(jī)的系統(tǒng)時(shí)鐘是多少M(fèi)Hz,怎樣才能達(dá)到Datasheet中描述的最大系統(tǒng)時(shí)鐘,該單片機(jī)的外設(shè)的時(shí)鐘會(huì)是多少M(fèi)Hz呢?如果要使用延時(shí),我怎么編寫(xiě)程序才能實(shí)現(xiàn)精準(zhǔn)的延時(shí)呢?我認(rèn)為這些問(wèn)題是我開(kāi)始接觸新單片機(jī)之前需要了解的。
對(duì)于每款A(yù)RM Cortex-M系列單片機(jī)而言,廠商為了更好的推廣自己的單片機(jī),同時(shí)方便設(shè)計(jì)人員使用,降低產(chǎn)品開(kāi)發(fā)周期,都會(huì)將該單片機(jī)的外設(shè)相關(guān)寄存器以及外設(shè)的相關(guān)函數(shù)都實(shí)現(xiàn)并打包,放在官方網(wǎng)站上免費(fèi)供大家使用。STM32F405RG的標(biāo)準(zhǔn)外設(shè)庫(kù)還包含有DSP核的各種運(yùn)算函數(shù)。如果需要,可以從http://www2.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32065.html#下載。
如果使用標(biāo)準(zhǔn)外設(shè)庫(kù),我們可以根據(jù)標(biāo)準(zhǔn)外設(shè)庫(kù)中的system_stm32f4xx.c文件中的代碼分析可知:
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx) #define PLL_M 25 #elif defined (STM32F446xx) #define PLL_M 8 #elif defined (STM32F410xx) || defined (STM32F411xE) #if defined(USE_HSE_BYPASS) #define PLL_M 8 #else /* !USE_HSE_BYPASS */ #define PLL_M 16 #endif /* USE_HSE_BYPASS */ #else #endif #if defined (STM32F40_41xxx) #define PLL_N 336 /* SYSCLK = PLL_VCO / PLL_P */ #define PLL_P 2 #endif #if defined(STM32F40_41xxx) uint32_t SystemCoreClock = 168000000; #endif
根據(jù)編程手冊(cè)關(guān)于時(shí)鐘寄存器的內(nèi)容,可知
PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
SYSCLK=PLL_VCO/PLL_P
式中,HSE_VALUE表示單片機(jī)外接晶振的頻率,HSI_VALUE表示單片機(jī)內(nèi)部振蕩器的頻率,本實(shí)驗(yàn)板使用的是外部25MHz的晶振,根據(jù)程序中的配置,我們可以計(jì)算出SystemCoreClock =168000000。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。