女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

STM32串口中斷及DMA接收常見的幾個問題

jf_pJlTbmA9 ? 來源:strongerHuang ? 作者:strongerHuang ? 2023-10-26 16:41 ? 次閱讀

今天再給大家分享一些關于STM32串口中斷及DMA接收常見的幾個問題。

UART串口中斷接收

使能UART串口中斷之后,有接收到UART數據,進入中斷,此時要清除RXNE接收標志位:

1)通過軟件向該RXNE標志位寫入零來清零;

2)通過對 USART_DR 寄存器執行讀入操作將該位清零。

這里可以查看對應《參考手冊》,一般我們選擇第2種,通過讀取UART串口數據來清零。

1、中斷接收數據丟失

在UART串口中斷函數中,或者更高優先級中斷函數中長時間執行,導致接收丟失,所以,請勿在中斷函數中長時間執行。

特別有些人,還在中斷函數添加延時函數。實際應用中,只要不是特殊情況,比如測試某個功能可以添加延時函數,都不建議在中斷函數添加延時函數。

2、ORE上溢錯誤

ORE上溢錯誤是什么意思呢? 可能很多人不了解,簡單說就是:UART接收到有數據,沒有去取,但又來了數據,此時就會產生ORE上溢錯誤。(請看“參考手冊”)

其實,上面這種長時間在占用中斷,就會導致UART接收數據上溢。

很多人沒有在意這個,如果是使能了中斷接收,標志位沒有清除,又有ORE上溢錯誤的話,程序就會不停地進入UART中斷。(大家不妨試一下,看一下是不是你代碼一直在UART中斷里面不停運行)。

3、使能接收中斷前,先清除接收標志位

有時候,在程序初始化的時候,就會接收到數據,這個時候建議大家先清除接收標志位再使能接收中斷。類似如下:

wKgZomUD8ZyAcMFkAAOnWVM3tz4985.jpg

DMA接收串口數據

使用DMA接收串口數據,相信很多朋友都知道。這個可以理解為使用隊列,或者FIFO的形式,防止因高優先級中斷而打斷,導致接收數據丟失。

但很多人都遇到過,接收不到數據,或者數據異常的情況。所以,這里同樣有需要注意的地方。

1、使能UART之前,先使能DMA相關配置

這個和清除標志位一樣的道理,使能UART之前,先使能DMA相關配置,防止在配置過程中有接收數據。

wKgZomUD8Z2AQ7HXAAEwkQrKiT4053.jpg

2、ORE上溢錯誤導致不能使用DMA接收數據

導致不能DMA接收不到數據的根源,有一種可能就是有ORE上溢錯誤。

若在串口初始化并使能后到 DMA 使能之前有數據來,MCU是不能接收的。如果此時數據寄存器 USART_DR 存在一個數據,再來一個數據,就會導致ORE上溢錯誤。

一旦產生上溢錯誤后,就無法再觸發 DAM 請求,即使之后再啟動 DMA 也不行,無法觸發 DMA 請求就無法將數據寄存器內的數據及時轉移走,如此陷入死鎖。這就是串口無法正常接收的原因。

所以,最后提醒大家,配置時,請一定要注意這些細節。

來源:嵌入式專欄(作者 | strongerHuang)
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5423

    瀏覽量

    123418
  • STM32
    +關注

    關注

    2290

    文章

    11017

    瀏覽量

    362476
  • 串口
    +關注

    關注

    14

    文章

    1586

    瀏覽量

    78742
  • dma
    dma
    +關注

    關注

    3

    文章

    572

    瀏覽量

    102359
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32串口下載軟件(FLYMCU)

    STM32串口下載軟件(FLYMCU),經典版本,親試可用。
    發表于 04-09 15:59 ?1次下載

    使用串口dma環形接收+空閑中斷,觸發空閑中斷后進入任務中拷貝數據發現拷貝的數據全為0,怎么處理?

    求助,我使用串口dma環形接收+空閑中斷,默認應該開了緩存,在觸發空閑中斷后進入任務中拷貝數據發現拷貝的數據全為0,但是我掛上調試之后在拷貝
    發表于 03-27 06:17

    stm32f105串口數據丟失的原因?

    hal庫通過dma空閑中斷接收數據,收到的數據直接通過串口打印出去,每隔一段時間出現接收到數據丟失是為啥呢
    發表于 03-14 13:38

    STM32F427串口接收和發送中斷同時使能,為什么會出現接收中斷丟數的情況?

    STM32F427芯片,針對UART7開啟串口接收緩存區非空中斷RXNE和串口傳輸完成中斷TC.
    發表于 03-11 07:05

    串口中斷是內部中斷還是外部中斷串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發表于 01-29 15:03 ?1474次閱讀

    串口中斷需要清除標志位嗎,串口中斷標志位會自動清除嗎

    在電子通信領域,串口中斷作為一種重要的通信機制,廣泛應用于各種嵌入式系統和計算機設備中。串口中斷標志位的管理,尤其是是否需要手動清除以及是否會自動清除,是理解和實現串口通信的關鍵環節。
    的頭像 發表于 01-29 14:59 ?1418次閱讀

    串口中斷有什么用,串口中斷的觸發條件是什么

    在現代電子通信系統中,串口中斷作為一種高效的數據處理機制,扮演著至關重要的角色。它允許處理器在數據到達或發送完成時立即響應,從而提高系統的響應速度和效率。
    的頭像 發表于 01-29 14:56 ?1494次閱讀

    STM32串口接受中斷使用C++STL中的queue導致所有中斷失效

    ,FreeRTOS的heap設置為8k 有兩個中斷,1s觸發的定時器中斷串口接收中斷 遇到問題 串口
    發表于 01-24 10:21

    AN-354: 應用工程師問答——1幾個問題

    電子發燒友網站提供《AN-354: 應用工程師問答——1幾個問題.pdf》資料免費下載
    發表于 01-13 15:43 ?0次下載
    AN-354: 應用工程師問答——1<b class='flag-5'>幾個問題</b>

    STM32CUBEMX(6)--移植雅特力AT32F403AVGT7,雙串口通過DMA方式接收不定長數據

    (&huart3, UART_IT_IDLE);//使能串口2 IDLE中斷 printf(\"雙串口DMA接收例程\\\\r\\
    發表于 09-06 16:37

    STM32CUBEMX(2)--USART通過DMA方式接收不定長數據

    ,如下所示: 配置時鐘樹 STM32F0的最高主頻到48M,所以配置48即可: 串口配置 本次實驗使用的串口1進行串口通信,波特率配置為115200。 配置
    發表于 09-04 11:48

    STM32G030F6串口空閑中斷配置卡死怎么解決?

    本人在用STM32G030F6 串口空閑中斷+DMA接受的時候,CubeMX配置完成,在mian函數while(1)前初始化,使能空閑中斷_
    發表于 07-22 06:51

    NON_OS sdkv2.0.0的mqtt demo里串口中斷沒反應是怎么回事?

    NON_OS的mqtt后我看了串口中斷的回調函數是接收到啥就發送啥,但是實際我發送啥反應都沒有,好像8266的串口中斷沒有執行
    發表于 07-12 08:21

    STM32G030F6用串口中斷函數接收數據,發送數據就死機怎么解決?

    平臺介紹: 芯片是使用的STM32G030F6,系統是rt-thread nano-v3.1.5, 使用rtthread studio + cubemx生成工程項目 問題描述:想使用串口中斷方式去
    發表于 07-11 06:44

    使用stm32f205和esp32之間進行串口通訊時遇到的疑問求解

    時間,接收超時時間設置為50ms,測量最小50ms,最大到了96ms。 stm32f205串口: 使用dma進行收據收發,可以保證通訊速度,50ms收發一次,數據長度小于20字節,長
    發表于 06-19 07:53