亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

3天內不再提示

如何解決PWM使用的DMA通道與串口接收的DMA通道撞車問題

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-16 11:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

項目做到一半,碰到個尷尬問題:PWM使用的DMA通道與串口接收的DMA通道撞車了,咋辦?

考慮一下,決定放棄idle中斷+dma的串口不定長數(shù)據(jù)接收方案,回到中斷接收去。

中斷接收函數(shù)HAL_UART_RECEIVE_IT函數(shù)是個定長接收函數(shù),除非把接收長度設為1。由于我使用freertos系統(tǒng),打斷系統(tǒng)的時間應盡可能少,頻率盡可能低。每個字節(jié)都進一次hal庫的接收處理函數(shù),進行各種判斷實在是不友好,因此考慮跳過hal的串口處理部分,直接判斷uart_flag_rxne標志位與uart_flag_idle標志位,存入接收緩沖。觸發(fā)idle中斷后認為不定長數(shù)據(jù)接收完畢,進行處理。

代碼:

中斷使能與初始化,不啟用hal_uart_receive_it。

100059078-113575-x1.png

中斷處理部分,跳過hal中斷處理函數(shù)

100059078-113576-x2.png

注意:__hal_uart_clear_flag函數(shù)不能清除idle標志位,需要用古老的讀取方法清空。否則會卡死在中斷處理結束之后。

優(yōu)點:中斷處理內容盡可能簡化,降低對系統(tǒng)內核的打斷;

缺點:只適用于8位數(shù)據(jù)位,無校驗位等最常規(guī)通信方式,對于更復雜參數(shù)的串口通信有待測試,省掉的hal庫會不會造成運行不穩(wěn)定有待于繼續(xù)測試。

版權聲明:本文轉自CSDN,博主fox0815
遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接和本聲明。
原文鏈接:https://blog.csdn.net/fox0815/article/details/106461788
審核編輯:何安

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

    關注

    116

    文章

    5828

    瀏覽量

    223303
  • 串口
    +關注

    關注

    15

    文章

    1603

    瀏覽量

    81687
  • dma
    dma
    +關注

    關注

    3

    文章

    577

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RVMCU課堂「18」: 手把手教你玩轉RVSTAR—DMA數(shù)據(jù)傳輸篇

    發(fā)送功能,讓數(shù)據(jù)不經CPU直接從內存(txbuffer)傳輸?shù)?b class='flag-5'>串口的發(fā)送端,然后使用串口DMA接收功能接收10個字節(jié)的數(shù)據(jù),保存到rxbu
    發(fā)表于 10-30 08:29

    rt-thread 在使用串口DMA模式的時候,接收數(shù)據(jù)接收不到00,為什么?

    硬件為STM32F103ZET6: 在使用串口通訊時,在DMA接收模式下,收不到00數(shù)據(jù),遇到00數(shù)據(jù),好像DMA模式就認為是數(shù)據(jù)已經結束了一樣。 代碼調試部分 換成非0數(shù)據(jù)就能收
    發(fā)表于 10-14 06:20

    串口DMA接收數(shù)據(jù)包丟失怎么解決?

    RTT串口DMA接收數(shù)據(jù),超過緩沖區(qū)后為什么會吞掉一個數(shù)據(jù)包呢,不能每次處理完后清除緩沖區(qū)數(shù)據(jù)嗎,感覺接收的數(shù)據(jù)是累計的,累計滿之后會重新覆蓋,在最后一個包
    發(fā)表于 09-29 07:50

    配置了串口DMA,現(xiàn)在是接收可以,發(fā)送不行,是什么地方沒有設置對嗎?

    配置了串口DMA,現(xiàn)在是接收可以,發(fā)送不行,是什么地方沒有設置對嗎?當配置DMA_TX 不能發(fā)送數(shù)據(jù),默認輪詢發(fā)送就可以。配置如下圖:
    發(fā)表于 09-28 07:41

    STM32F405RGT6 ADC2+TIM4觸發(fā)+DMA(DMA2_Stream2_CH1)+DMA中斷會死機,怎么解決?

    NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream2_IRQn;//DMA2_Stream2中斷占用通道
    發(fā)表于 08-04 07:16

    求助,關于stm32H7多DMA數(shù)據(jù)流問題求解

    情況如下:stm32H7配置了一個adc進行采樣,通過dma進行數(shù)據(jù)傳輸,串口接收和發(fā)送命令,用兩個dma數(shù)據(jù)流通道,采用的空閑中斷。 問題
    發(fā)表于 07-29 15:02

    STM32407使用串口閑時中斷+DMA方式接收最大接收字節(jié)是多少?

    使用串口閑時中斷+DMA方式接收數(shù)據(jù),波特率為460800,DMA接收長度為1024個字節(jié),并開啟串口
    發(fā)表于 07-22 08:16

    第十五章 DMA

    本章介紹DMA(直接存儲器存?。?,其可在不占用CPU的情況下搬數(shù)據(jù),支持多種傳輸方向,含控制器、通道等配置及相關實驗代碼。
    的頭像 發(fā)表于 06-14 16:32 ?1013次閱讀
    第十五章 <b class='flag-5'>DMA</b>

    為什么在“PWM Adc Dma 344 S32CT”示例中使用ISR塊來讀取dma adc通道

    我正在 MBDT 中使用 S32K358 進行一個項目,我正在尋找啟用 DMA 傳輸類型的 ADC 模塊。 在 ADC 示例“PWM Adc Dma 344 S32CT”中,我發(fā)現(xiàn)要讀取配置為
    發(fā)表于 04-08 06:39

    STM32G030F6 ADC+DMA通道非連續(xù)采樣無法正常工作怎么解決?

    配置:使用STM32G030F6 ADC外設時,ADC使用兩個通道DMA配置為循環(huán)模式,ADC掃描模式+非連續(xù)采樣。 問題:初始化階段能進一次DMA傳輸完成中斷,在main函數(shù)中再次開啟ADC轉化
    發(fā)表于 03-12 07:10

    CKS32F107xx系列的DMA控制器簡介

    直接存儲器存取(DMA)用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU干預,數(shù)據(jù)可以通過DMA快速地移動,這就節(jié)省了CPU的資源來做其他操作。兩個DMA控制器有12個
    的頭像 發(fā)表于 02-18 17:24 ?1183次閱讀
    CKS32F107xx系列的<b class='flag-5'>DMA</b>控制器簡介

    如何使用DMA進行USART不定長度接收

    在上一講中,我們對USART進行了簡單介紹,并講解了如何在不使用DMA的情況下進行不定長度數(shù)據(jù)接收,本講將著重講解如何使用DMA進行USART不定長度接收。
    的頭像 發(fā)表于 02-18 17:01 ?1264次閱讀
    如何使用<b class='flag-5'>DMA</b>進行USART不定長度<b class='flag-5'>接收</b>

    ZYNQ基礎---AXI DMA使用

    前言 在ZYNQ中進行PL-PS數(shù)據(jù)交互的時候,經常會使用到DMA,其實在前面的ZYNQ學習當中,也有學習過DMA的使用,那就是通過使用自定義的IP,完成HP接口向內存寫入和讀取數(shù)據(jù)的方式。同樣
    的頭像 發(fā)表于 01-06 11:13 ?3397次閱讀
    ZYNQ基礎---AXI <b class='flag-5'>DMA</b>使用

    雅特力AT32F402/F405 DMA使用指南

    DMA簡介DMA控制器的作用不僅在增強系統(tǒng)性能并減少處理器的中斷生成,而且還針對32位MCU應用程序專門優(yōu)化設計。DMA控制器為存儲器到存儲器,存儲器到外設和外設到存儲器的傳輸提供了7個通道
    的頭像 發(fā)表于 11-20 01:03 ?1361次閱讀
    雅特力AT32F402/F405 <b class='flag-5'>DMA</b>使用指南

    DMA是什么?詳細介紹

    DMA(Direct Memory Access)是一種允許某些硬件子系統(tǒng)直接訪問系統(tǒng)內存的技術,而無需中央處理單元(CPU)的介入。這種技術可以顯著提高數(shù)據(jù)傳輸速率,減輕CPU的負擔,并提高整體
    的頭像 發(fā)表于 11-11 10:49 ?2.1w次閱讀