91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

STM32 5 個(gè)容易踩坑的外設(shè)使用技巧

信盈達(dá) ? 2025-11-24 19:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32 是嵌入式開(kāi)發(fā)領(lǐng)域的熱門(mén) MCU,功能豐富到幾乎可以完成所有常見(jiàn)控制任務(wù):GPIO、ADCUART、定時(shí)器、DMA……應(yīng)有盡有。但是,正因?yàn)楣δ軓?qiáng)大,開(kāi)發(fā)中踩坑的機(jī)會(huì)也隨之增多。很多初學(xué)者甚至有經(jīng)驗(yàn)的工程師,也常在外設(shè)配置上浪費(fèi)大量時(shí)間,調(diào)試半天仍然找不到問(wèn)題。本文總結(jié)了 5 個(gè)最容易踩坑的 STM32 外設(shè)使用技巧,讓你少走彎路、提高開(kāi)發(fā)效率。

1. GPIO 配置別忘了上拉/下拉

很多初學(xué)者在讀取按鍵、外部傳感器或中斷輸入時(shí),會(huì)發(fā)現(xiàn)輸入狀態(tài)總是不穩(wěn)定,甚至出現(xiàn)抖動(dòng)或誤觸發(fā)。這通常是因?yàn)?GPIO 輸入口浮空造成的。

  • 常見(jiàn)坑:
    • 輸入引腳未配置上拉/下拉,導(dǎo)致?tīng)顟B(tài)隨機(jī)波動(dòng)。
    • 上拉/下拉電阻和外部電路沖突,影響信號(hào)可靠性。
    • 模擬輸入誤用了上拉/下拉,降低 ADC 測(cè)量精度。
  • 技巧:
    • 數(shù)字輸入:根據(jù)電路選擇上拉或下拉電阻。
    • 模擬輸入:禁用上拉/下拉,保證信號(hào)純凈。
    • 中斷輸入:確保在中斷觸發(fā)前引腳狀態(tài)穩(wěn)定,必要時(shí)使用 RC 濾波。

2. UART 波特率計(jì)算要精確

STM32 的 UART 是最常用的通信方式,但通信異常頻繁,尤其在高波特率下。

  • 常見(jiàn)坑:
    • 波特率設(shè)置與主機(jī)不匹配,導(dǎo)致數(shù)據(jù)丟失或亂碼。
    • 時(shí)鐘源選擇錯(cuò)誤,計(jì)算 DIV 值出現(xiàn)偏差。
    • 高速數(shù)據(jù)通信未使用硬件流控,容易發(fā)生溢出。
  • 技巧:
    • 使用 STM32CubeMX 或手動(dòng)計(jì)算時(shí),仔細(xì)檢查 PCLK 時(shí)鐘源。
    • 高波特率下(如 115200、230400),建議開(kāi)啟 CTS/RTS 硬件流控。
    • 使用 DMA 傳輸可以減少 CPU 干擾,提高數(shù)據(jù)穩(wěn)定性。
    • 調(diào)試時(shí)通過(guò)示波器或邏輯分析儀驗(yàn)證波特率和信號(hào)質(zhì)量。

3. ADC 轉(zhuǎn)換精度與采樣時(shí)間

STM32 的 ADC 非常靈活,但采樣時(shí)間和信號(hào)源阻抗不匹配時(shí),容易出現(xiàn)測(cè)量值不穩(wěn)定或偏差大。

  • 常見(jiàn)坑:
    • 高阻抗信號(hào)源未增加采樣時(shí)間,ADC 值抖動(dòng)明顯。
    • 連續(xù)采樣模式未考慮 DMA 或緩存,數(shù)據(jù)可能覆蓋。
    • 外部參考電壓不穩(wěn)定,導(dǎo)致測(cè)量誤差。
  • 技巧:
    • 高阻抗信號(hào)源增加采樣時(shí)間,保證充電充分。
    • 連續(xù)采樣時(shí)結(jié)合 DMA 或環(huán)形緩沖區(qū),避免數(shù)據(jù)覆蓋。
    • 使用穩(wěn)定參考電壓(VREF+、VREF-),提高精度
    • 對(duì)關(guān)鍵采樣信號(hào),可增加多次采樣平均,降低噪聲影響。

4. 定時(shí)器中斷與優(yōu)先級(jí)

STM32 定時(shí)器功能強(qiáng)大,可生成 PWM、周期中斷、捕獲輸入等。但在多中斷環(huán)境下,配置不當(dāng)容易出現(xiàn)中斷沖突或漏觸發(fā)。

  • 常見(jiàn)坑:
    • 中斷優(yōu)先級(jí)設(shè)置不合理,高優(yōu)先級(jí)中斷阻塞低優(yōu)先級(jí)任務(wù)。
    • 軟件延時(shí)函數(shù)與定時(shí)器沖突,導(dǎo)致定時(shí)精度受影響。
    • PWM 輸出和定時(shí)器中斷共用通道,配置錯(cuò)誤可能導(dǎo)致信號(hào)異常。
  • 技巧:
    • 使用 NVIC 合理設(shè)置中斷優(yōu)先級(jí),保證關(guān)鍵任務(wù)及時(shí)響應(yīng)。
    • 對(duì)周期性任務(wù),優(yōu)先使用硬件定時(shí)器,而非軟件延時(shí)。
    • PWM 輸出與定時(shí)器中斷共用時(shí),仔細(xì)檢查 TIMx 通道和重復(fù)周期。
    • 可結(jié)合定時(shí)器事件寄存器(UIF)和 DMA,實(shí)現(xiàn)高精度控制。

5. DMA 使用要注意對(duì)齊和緩存

DMA 可以顯著降低 CPU 負(fù)載,提高系統(tǒng)效率,但如果使用不當(dāng),數(shù)據(jù)可能錯(cuò)亂或丟失。

  • 常見(jiàn)坑:
    • 數(shù)據(jù)緩沖區(qū)未對(duì)齊,導(dǎo)致訪問(wèn)異常或性能下降。
    • Cortex-M7 等帶緩存的 MCU,DMA 數(shù)據(jù)未刷新緩存,讀取錯(cuò)誤。
    • DMA 與中斷同時(shí)操作同一緩沖區(qū),出現(xiàn)數(shù)據(jù)覆蓋或丟失。
  • 技巧:
    • 數(shù)據(jù)緩沖區(qū)按總線寬度對(duì)齊(32 位 MCU 推薦 4 字節(jié)對(duì)齊)。
    • 帶緩存 MCU 使用 Cache Invalidate/Flush 確保數(shù)據(jù)一致性。
    • DMA 與中斷結(jié)合時(shí),避免同時(shí)修改同一緩沖區(qū),可使用雙緩沖或環(huán)形緩沖。
    • 調(diào)試時(shí)觀察 DMA 傳輸標(biāo)志和中斷狀態(tài),及時(shí)排查異常。

總結(jié)

STM32 外設(shè)功能強(qiáng)大,但也容易踩坑。掌握以上 5 個(gè)技巧,你可以:

  • GPIO:避免輸入漂移,保證中斷可靠。
  • UART:波特率精準(zhǔn),高速通信穩(wěn)定。
  • ADC:采樣時(shí)間和參考電壓控制精度。
  • 定時(shí)器:合理設(shè)置中斷優(yōu)先級(jí),精確周期任務(wù)。
  • DMA:數(shù)據(jù)對(duì)齊和緩存處理,避免丟失和錯(cuò)亂。

這些技巧能夠幫助開(kāi)發(fā)者在項(xiàng)目中減少錯(cuò)誤,提高系統(tǒng)穩(wěn)定性和開(kāi)發(fā)效率。

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

    關(guān)注

    147

    文章

    18914

    瀏覽量

    397828
  • STM32
    +關(guān)注

    關(guān)注

    2309

    文章

    11161

    瀏覽量

    373364
  • 嵌入式開(kāi)發(fā)

    關(guān)注

    18

    文章

    1145

    瀏覽量

    50110
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用STM32輸出時(shí)鐘給外設(shè)使用?

    如何使用STM32輸出時(shí)鐘給外設(shè)使用?
    發(fā)表于 04-08 07:20

    使用STM32采集電池電壓過(guò)的那些

    本文來(lái)解析一個(gè)盆友在使用STM32采集電池電壓過(guò)的。以STM32F4 的ADC屬于逐次逼近SAR 型ADC為例進(jìn)行分析,參考
    發(fā)表于 03-01 07:39

    STM32+機(jī)智云】機(jī)智云手機(jī)APP點(diǎn)燈實(shí)驗(yàn)記錄 精選資料分享

    STM32+機(jī)智云】機(jī)智云手機(jī)APP點(diǎn)燈實(shí)驗(yàn)記錄一、實(shí)驗(yàn)背景因?yàn)轫?xiàng)目開(kāi)發(fā)需要用到云平臺(tái),所以開(kāi)始學(xué)習(xí)機(jī)智云平臺(tái),聽(tīng)說(shuō)機(jī)智云比較容易入門(mén),還有手機(jī)APP。因此開(kāi)始了
    發(fā)表于 08-04 08:30

    開(kāi)發(fā)STM32 USB HID過(guò)的

    記錄一下 開(kāi)發(fā)STM32 USB HID過(guò)的一、前言二、代碼配置一、前言MCU: STM32F103C8T6CubeMX: STM32C
    發(fā)表于 08-24 07:15

    使用樹(shù)莓派搭建stm32開(kāi)發(fā)環(huán)境過(guò)的以及碰到的問(wèn)題

    使用樹(shù)莓派搭建stm32開(kāi)發(fā)環(huán)境了很多,下面主要是記錄一下過(guò)的,以及碰到的問(wèn)題。##開(kāi)發(fā)方式的選擇1.使用Eclipse+GDB+O
    發(fā)表于 08-24 07:47

    有沒(méi)有關(guān)于STM32入門(mén)經(jīng)驗(yàn)分享

    有沒(méi)有關(guān)于STM32入門(mén)經(jīng)驗(yàn)分享
    發(fā)表于 10-13 06:52

    NodeMCU開(kāi)發(fā)板經(jīng)歷分享

    寫(xiě)在前面今天入手了一個(gè)NodeMCU的板子,準(zhǔn)備學(xué)習(xí)一下物聯(lián)網(wǎng)相關(guān)的知識(shí)。不過(guò)由于博主學(xué)藝不精,在第一步燒寫(xiě)固件上就了,所以就想著把自己的
    發(fā)表于 11-01 07:55

    Linux學(xué)習(xí)過(guò)程過(guò)的與如何解決

    Linux記錄記錄Linux學(xué)習(xí)過(guò)程過(guò)的與如何解決1解決方法:F10進(jìn)入BIOS使能
    發(fā)表于 11-04 08:44

    電源設(shè)計(jì)容易和線性穩(wěn)壓選型過(guò)程

    前文提到了一些線性穩(wěn)壓的主要特點(diǎn),本文作者將結(jié)合NXP智能車大賽實(shí)際案例,說(shuō)一下電源設(shè)計(jì)容易和線性穩(wěn)壓選型過(guò)程。文章目錄主要參數(shù)輸入電壓輸出電壓主要參數(shù)在為實(shí)際應(yīng)用電路設(shè)計(jì)電源的時(shí)候,首先要
    發(fā)表于 11-12 07:54

    STM32編程常有哪些?

    STM32編程常有哪些?
    發(fā)表于 12-17 06:15

    講解STM32的SPI外設(shè)使

    ??本章主要是講解了STM32的SPI外設(shè)使用。1、芯片選型&創(chuàng)建工程這里我選擇的是STM32F103CC8T6芯片。配置工程名點(diǎn)擊finish2、芯片工程配置這里我們主要是在.ioc文件里面進(jìn)行圖形界面配置1)配置系統(tǒng)外部晶振
    發(fā)表于 01-13 08:09

    嵌入式Linux記錄

    Linux記錄記錄Linux學(xué)習(xí)過(guò)程過(guò)的與如何解決1解決方法:F10進(jìn)入BIOS使能
    發(fā)表于 11-01 17:21 ?10次下載
    嵌入式Linux<b class='flag-5'>踩</b><b class='flag-5'>坑</b>記錄

    keil + STM32CubeMX 開(kāi)發(fā)stm32L0

    keil + STM32CubeMX 開(kāi)發(fā)stm32L0 我個(gè)人喜歡下載東西全部走官網(wǎng) 不喜歡去下別人給的亂七八糟的資源。原因有二,一、找到頭疼,版本說(shuō)不定還舊。二、病毒,和各種奇
    發(fā)表于 12-03 09:06 ?30次下載
    keil + <b class='flag-5'>STM32</b>CubeMX 開(kāi)發(fā)<b class='flag-5'>stm32</b>L0 <b class='flag-5'>踩</b><b class='flag-5'>坑</b>

    STM32CubeIDE+FREERTOS記錄

    STM32CubeIDE+FREERTOS記錄
    發(fā)表于 12-05 18:06 ?15次下載
    <b class='flag-5'>STM32</b>CubeIDE+FREERTOS<b class='flag-5'>踩</b><b class='flag-5'>坑</b>記錄

    推挽電路的,你過(guò)沒(méi)?

    推挽電路的,你過(guò)沒(méi)?
    的頭像 發(fā)表于 11-24 16:25 ?1923次閱讀
    推挽電路的<b class='flag-5'>坑</b>,你<b class='flag-5'>踩</b>過(guò)沒(méi)?