0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談STM32時鐘配置及相關(guān)問題

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-24 11:16 ? 次閱讀

Ⅰ、寫在前面

最近有很多朋友問:1.我的USART串口打印出來的數(shù)據(jù)是亂碼?2.我的TIM定時器延時或定時不準確?

常見可能原因:

1.晶振問題:外部晶振不起振、或頻率與配置不匹配。

2.軟件問題:分頻、倍頻、時鐘源選擇等。

總結(jié)來說,主要還在于軟件的問題。因為即使沒有外部晶振,也可以使用內(nèi)部晶振。

其實,軟件的問題是容易得到解決的,只要你了解了STM32時鐘配置里面具體內(nèi)容就知道了。

關(guān)于本文的詳細內(nèi)容請看下面章節(jié)

Ⅱ、本文要點

要了解時鐘的配置,就需要知道它在哪里配置,也就是還需要了解軟件執(zhí)行的流程。

1.軟件流程

說軟件流程是讓大家知道系統(tǒng)時鐘配置的位置。不管是使用寄存器開發(fā),還是使用庫(標準庫、HAL庫)開發(fā)STM32,工程中基本上都有“startup_stm32fxxxxx.s”這么一個啟動文件。

在線調(diào)試的朋友應(yīng)該知道,你點一下復(fù)位按鈕,軟件會跳轉(zhuǎn)到下圖的位置,其實可以看到復(fù)位之后第一個執(zhí)行的函數(shù)就是【SystemInit】。說到這里,應(yīng)該明白為什么我們在main函數(shù)開始沒有看見時鐘配置相關(guān)的函數(shù)了吧,程序是在復(fù)位后立馬配置的時鐘。

2.時鐘配置位置

使用庫庫(標準庫、HAL庫)開發(fā)STM32的朋友,在工程中都可能會看到“system_stm32fxxx.c”這么一個文件,這個文件里面代碼主要的功能就是配置STM32的系統(tǒng)時鐘。

上面啟動文件中說到的【SystemInit】函數(shù)就是在這個文件里面,【SystemInit】函數(shù)里面就是配置系統(tǒng)時鐘的具體內(nèi)容。配置系統(tǒng)時鐘主要就是時鐘源選擇、分頻、倍頻等。

注意:STM32有多系列芯片,這里【SystemInit】函數(shù)里面代碼的內(nèi)容也因此不同。

3.外部晶振頻率、系統(tǒng)時鐘頻率

對于初學者,容易受到影響的就是兩個參數(shù):HSE_VALUE(外部晶振頻率)、SystemCoreClock(系統(tǒng)時鐘)。這個兩個參數(shù)在ST提供的庫中都有一個參考值,一般的開發(fā)板都是按照參考值設(shè)計的晶振,所以不用修改。但如果不同,那么就要修改。位置分別在“stm32fxxx.h”和“system_stm32fxxx.c”文件下面,如下圖(F4系列為例):

4.時鐘樹

時鐘樹是很好反應(yīng)時鐘時鐘源選擇、分頻、倍頻的一個框圖,要深入理解,請下載相關(guān)參考手冊查看RCC章節(jié)的時鐘樹,下面截取部分系列芯片時鐘樹圖:

5.MCO時鐘輸出

驗證時鐘配置是否正確的方法可以通過MCO輸出時鐘,用示波器檢測一下就知道了。我前面提供的軟件工程中有一段代碼(如下圖),主要就是MCO時鐘輸出的代碼。

Ⅲ、說明

需要深入掌握STM32系統(tǒng)時鐘配置的內(nèi)容,還需要你自己認真閱讀以下源代碼(建議看一下注釋說明)。官方提供的代碼從命名上都是很容易理解的。

相關(guān)文章:

STM32F4_RCC系統(tǒng)時鐘配置及描述

以上總結(jié)僅供參考,若有不對之處,敬請諒解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354293
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30760
  • 時鐘配置
    +關(guān)注

    關(guān)注

    1

    文章

    14

    瀏覽量

    8608
收藏 人收藏

    評論

    相關(guān)推薦

    音頻設(shè)備的PLL和時鐘配置應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《音頻設(shè)備的PLL和時鐘配置應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-14 10:38 ?0次下載
    音頻設(shè)備的PLL和<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>應(yīng)用說明

    器件的時鐘配置和TAx5x1x系列的靈活時鐘

    電子發(fā)燒友網(wǎng)站提供《器件的時鐘配置和TAx5x1x系列的靈活時鐘.pdf》資料免費下載
    發(fā)表于 08-28 11:03 ?0次下載
    器件的<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>和TAx5x1x系列的靈活<b class='flag-5'>時鐘</b>

    stm32用串口燒錄怎么設(shè)置

    微控制器。 STM32CubeMX配置 打開STM32CubeMX,選擇您的STM32芯片型號。 配置您的微控制器的
    的頭像 發(fā)表于 08-22 09:33 ?1062次閱讀

    STM32F407系列使用HSI時鐘后,PLL最高能配置到多少?

    最近在使用STM32F407系列,當使用HSI時鐘后,PLL最高只能配置到42MHz,找了很多文檔也沒有介紹這方面的資料。如果超過42Mhz,就會發(fā)生跑飛的情況。我也試過配置到48MH
    發(fā)表于 04-26 07:49

    STM32F030CC USART時鐘配置手冊和IAR不一致的原因?

    STM32F030CCUSART時鐘配置手冊和IAR不一致
    發(fā)表于 04-12 08:27

    stm32f100用庫3.5如何讓配置系統(tǒng)時鐘,8MHz晶振輸入,如何配置為24MHz系統(tǒng)時鐘?

    請問,stm32f100用庫3.5如何讓配置系統(tǒng)時鐘,8MHz晶振輸入,如何配置為24MHz系統(tǒng)時鐘?學習
    發(fā)表于 03-26 06:55

    STM32CubeMX 6.5.0時鐘配置頁面的ADC時鐘源無法配置怎么解決?

    最新版STM32CubeMX 6.5.0,啟動ADC功能后,時鐘配置頁面的ADC時鐘源仍無法配置。STM
    發(fā)表于 03-25 07:04

    關(guān)于STM32L476 DFSDM時鐘配置的疑問求解

    stm32l4 配置DFSDM 時鐘只能來之 DFSDM_CHANNEL_OUTPUT_CLOCK_SYSTEM不能來自DFSDM_CHANNEL_OUTPUT_CLOCK_AUDIO cubemx 6.10.0
    發(fā)表于 03-08 06:26

    雅特力AT32F423時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細微的
    的頭像 發(fā)表于 02-19 13:26 ?539次閱讀
    雅特力AT32F423<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>

    怎么根據(jù)外圍電路配置單片機gpio的時鐘

    怎么根據(jù)外圍電路配置單片機gpio的時鐘? 根據(jù)外圍電路配置單片機GPIO的時鐘是一項重要的任務(wù),它決定了單片機與外部設(shè)備的通信速度和穩(wěn)定性。在本文中,我將詳細介紹如何根據(jù)外圍電路
    的頭像 發(fā)表于 01-31 10:57 ?1030次閱讀

    stm32使用AD5762配置程序

    如何使用STM32配置AD5762。 首先,我們需要確保STM32的開發(fā)環(huán)境已經(jīng)搭建好,并且熟悉STM32的編程方式。接下來,我們將按照以下步驟來
    的頭像 發(fā)表于 01-09 11:10 ?634次閱讀

    雅特力AT32WB415時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細微的
    的頭像 發(fā)表于 12-20 08:14 ?436次閱讀
    雅特力AT32WB415<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>

    淺談5G小基站中時鐘及無源射頻器件的應(yīng)用

    淺談5G小基站中時鐘及無源射頻器件的應(yīng)用
    的頭像 發(fā)表于 11-24 18:11 ?1116次閱讀
    <b class='flag-5'>淺談</b>5G小基站中<b class='flag-5'>時鐘</b>及無源射頻器件的應(yīng)用

    利用STM32CubeMX解讀時鐘

    提供給芯片中的RTC(實時時鐘)及IWDG(獨立看門狗)使用。2,中速時鐘MSIRC是“中速內(nèi)部時鐘”或“中速內(nèi)部振蕩器”,是STM32L系列獨有的
    的頭像 發(fā)表于 11-24 08:00 ?1086次閱讀
    利用<b class='flag-5'>STM32</b>CubeMX解讀<b class='flag-5'>時鐘</b>樹

    stm32cube怎么安裝 STM32CubeMX安裝步驟教程

    STM32CubeMX是STM32芯片圖形化配置工具,通過簡單的操作便能實現(xiàn)相關(guān)配置,省去了我們配置
    發(fā)表于 11-14 12:37 ?1583次閱讀
    <b class='flag-5'>stm32</b>cube怎么安裝 <b class='flag-5'>STM32</b>CubeMX安裝步驟教程