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

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

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

關(guān)于USART波特率 TIM的外設(shè)預(yù)分頻值

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-06 14:52 ? 次閱讀

使用、參考STM32標(biāo)準(zhǔn)外設(shè)庫,寄存器開發(fā)的朋友也需要注意一些細(xì)節(jié)問題。

1USART串口預(yù)分頻

許多朋友用寄存器開發(fā),就需要對寄存器中每一位十分熟悉才行。

但是在STM32中外設(shè)的寄存器很多,不像51這類單片機(jī),就那么為數(shù)不多的寄存器,而且寄存器也能很容易理解。

有朋友其實已經(jīng)發(fā)現(xiàn),UART波特率設(shè)置太高,或太低就不能實現(xiàn)了。看下圖波特率計算公式:

從上圖可以看得出,波特率與fCK和USARTDIV。其中USARTDIV是一個無符號的定點數(shù),這12位的值設(shè)置在USART_BRR寄存器。

結(jié)合上面圖文,大家應(yīng)該可以知道,波特率也是有一個范圍的,而且波特率是存在誤差的。

舉一個例子:fCK = 36M,波特率 = 100,那么計算出USARTDIV = 36M / 1600 =22500.

然而,12位的數(shù)最大為4095,所以,越界了。

寫這些其實希望不管你使用寄存器,還是庫開發(fā),其實都需要了解這些,避免入坑。

2

TIM定時器預(yù)分頻

前面有朋友問了我關(guān)于TIM定時器的問題,說自己參考STM32標(biāo)準(zhǔn)外設(shè)庫,配置定時器,但是定時卻不準(zhǔn)確。

經(jīng)過交談,他把配置代碼截圖給我看了。我一看,就看出問題出在預(yù)分頻值上。

而這位朋友是使用STM32F407,主頻168M,他想讓定時器每秒計數(shù)1000個,就是上面“SystemCoreClock / 1000”。

然而,他卻沒有考慮溢出問題:168M / 1000 = 168K,PrescalerValue最大值為65535.

另一個關(guān)于APB1、APB2時鐘問題

有朋友發(fā)現(xiàn)自己配置的定時會相差一倍,其實原因也是在于預(yù)分頻值不對造成的。

讓大家看一下下圖兩個預(yù)分頻宏定義:

原因在于:有的TIM定時器時鐘是APB1,有的是APB2。這兩個時鐘一般默認(rèn)配置是相差一倍,所以定時也就會相差一倍。

關(guān)于TIM使用的APB時鐘差異,大家可以通過查看“參考手冊”RCC章節(jié),或結(jié)合STM32Cube工具理解。

定時器RCC時鐘:

定時器Cbue時鐘配置:

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

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356787
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115091
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    17920
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30913
收藏 人收藏

    評論

    相關(guān)推薦

    RS232通信的波特率設(shè)置說明

    RS232通信的波特率設(shè)置是確保數(shù)據(jù)正確傳輸?shù)年P(guān)鍵參數(shù)之一。以下是對RS232通信波特率設(shè)置的說明: 一、波特率的概念 波特率是指每秒傳輸?shù)谋忍財?shù)(bps),是衡量數(shù)據(jù)傳輸速度的重要指
    的頭像 發(fā)表于 12-10 16:26 ?1191次閱讀

    波特率設(shè)置中的常見問題解析

    在數(shù)字通信系統(tǒng)中,波特率是一個關(guān)鍵參數(shù),它直接影響數(shù)據(jù)傳輸?shù)男屎涂煽啃?。然而,在實際應(yīng)用中,波特率的設(shè)置往往會引起一些常見的問題。 一、波特率與數(shù)據(jù)速率的混淆 問題描述: 許多人會將波特率
    的頭像 發(fā)表于 11-22 10:06 ?485次閱讀

    波特率與串行通信的關(guān)系 各種設(shè)備波特率轉(zhuǎn)換的方法

    波特率(Baud Rate)是串行通信中的一個重要參數(shù),它指的是信號傳輸?shù)乃俾?,即單位時間內(nèi)傳輸?shù)姆枺ɑ蛐盘枲顟B(tài))的數(shù)量。在串行通信中,波特率決定了數(shù)據(jù)傳輸?shù)乃俣?,因此對于通信效率和設(shè)備兼容性
    的頭像 發(fā)表于 11-22 10:01 ?620次閱讀

    常見的波特率標(biāo)準(zhǔn)和協(xié)議

    波特率是指在數(shù)據(jù)通信中,每秒鐘傳輸?shù)姆枖?shù)(或比特數(shù)),是衡量數(shù)據(jù)通信速度的重要指標(biāo)。在不同的通信協(xié)議和場景中,常見的波特率標(biāo)準(zhǔn)和協(xié)議有所不同。以下是一些常見的波特率標(biāo)準(zhǔn)和協(xié)議: 一、串口通信
    的頭像 發(fā)表于 11-22 09:56 ?2131次閱讀

    波特率的定義和計算方法 波特率與數(shù)據(jù)傳輸速度的關(guān)系

    波特率的定義 波特率(Baud Rate),又稱調(diào)制速率或傳符號,是指每秒傳輸?shù)姆枖?shù)目,單位為波特(Bd)。它是一個數(shù)字信號通信中重要的參數(shù),在串行通信協(xié)議中經(jīng)常被用作衡量串行數(shù)據(jù)
    的頭像 發(fā)表于 11-22 09:49 ?3034次閱讀

    波特率9600和115200的區(qū)別

    在現(xiàn)代通信技術(shù)中,數(shù)據(jù)傳輸速率是一個關(guān)鍵的性能指標(biāo)。對于串行通信,波特率是衡量數(shù)據(jù)傳輸速度的基本單位。波特率9600和115200是兩種常見的設(shè)置,它們在不同的應(yīng)用場景中有著各自的優(yōu)勢和局
    的頭像 發(fā)表于 10-18 14:56 ?2132次閱讀

    波特率與比特有何關(guān)系 波特率與數(shù)據(jù)傳輸速率的關(guān)系

    波特率(Baud Rate)和比特(Bit Rate)是衡量數(shù)據(jù)通信系統(tǒng)性能的兩個重要參數(shù),它們之間有著密切的關(guān)系,但并不完全相同。 波特率(Baud Rate): 波特率是指在數(shù)據(jù)
    的頭像 發(fā)表于 10-18 14:55 ?1128次閱讀

    uart波特率和傳輸頻率的關(guān)系 UART串口的常用波特率為多少

    UART(Universal Asynchronous Receiver/Transmitter)是一種廣泛使用的異步串行通信技術(shù),它允許兩臺設(shè)備之間進(jìn)行雙向數(shù)據(jù)傳輸。在UART通信中,波特率和傳輸
    的頭像 發(fā)表于 10-06 16:12 ?3355次閱讀
    uart<b class='flag-5'>波特率</b>和傳輸頻率的關(guān)系 UART串口的常用<b class='flag-5'>波特率</b>為多少

    如何使用示波器測量串口波特率

    在通信和電子測量領(lǐng)域,串口波特率是一個至關(guān)重要的參數(shù),它決定了數(shù)據(jù)在串行通信線上的傳輸速率。使用示波器來測量串口波特率是一種常見且有效的方法,尤其是在沒有專業(yè)串口調(diào)試工具或需要更精確測量時。本文將
    的頭像 發(fā)表于 05-27 16:25 ?5351次閱讀

    芯海應(yīng)用筆記:通用 MCU USART 自動波特率檢測

    本文檔介紹和說明芯??萍计煜?CS32 系列 MCU 的自動波特率檢測功能,并為不具備硬件自動波特率檢測的 MCU 產(chǎn)品提供替代軟件方法 。*附件:應(yīng)用筆記:芯海通用MCU USART自動波特
    發(fā)表于 05-16 11:42

    波特率有什么危害尼?又該如何避免?

    深入探討了波特率過高可能帶來的危害,并提供了一些實用建議來保護(hù)設(shè)備不受影響。在通信領(lǐng)域,波特率是決定數(shù)據(jù)傳輸速度的重要參數(shù)。然而,波特率設(shè)置不當(dāng)可能會對設(shè)備造成嚴(yán)重的影響。本文旨在揭示波特率
    的頭像 發(fā)表于 04-03 16:45 ?1458次閱讀

    請問STM32F407 SPI如何設(shè)置不同的波特率

    請教下大家F407 SPI1(Master)的波特率,因為讀取TI ADS1274,需要將SPI波特率設(shè)置成某些特殊,比如 51200 * 256 = 13107200,請問是否能做到? 目前我
    發(fā)表于 03-13 08:23

    為啥要轉(zhuǎn)換波特率 波特率和傳輸速率的關(guān)系

    對于串行多主 CAN 總線,如果波特率被稱為“500000波特”,則 CAN 上的該端口每秒最多可傳輸500000位。
    的頭像 發(fā)表于 03-06 17:38 ?5315次閱讀
    為啥要轉(zhuǎn)換<b class='flag-5'>波特率</b> <b class='flag-5'>波特率</b>和傳輸速率的關(guān)系

    波特率發(fā)生器使用哪個定時器 波特率發(fā)生器的時鐘來源是什么

    波特率發(fā)生器是一種用于控制串行數(shù)據(jù)通信速率的設(shè)備,它可以生成特定波特率的時鐘信號。在嵌入式系統(tǒng)、通信設(shè)備和計算機(jī)硬件中,波特率發(fā)生器的使用十分常見。波特率發(fā)生器通常使用定時器來實現(xiàn)時鐘
    的頭像 發(fā)表于 01-24 09:56 ?2335次閱讀

    什么是串口波特率?串口通信為什么要設(shè)置波特率?

    什么是串口波特率?串口通信為什么要設(shè)置波特率波特率與比特的關(guān)系 如何選擇串口波特率?? 串口波特率
    的頭像 發(fā)表于 01-22 16:10 ?2288次閱讀