伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

代碼:

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

100059078-113575-x1.png

中斷處理部分,跳過hal中斷處理函數

100059078-113576-x2.png

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

優點:中斷處理內容盡可能簡化,降低對系統內核的打斷;

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

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

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

    關注

    116

    文章

    5886

    瀏覽量

    226322
  • 串口
    +關注

    關注

    15

    文章

    1626

    瀏覽量

    83204
  • dma
    dma
    +關注

    關注

    3

    文章

    582

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DMA彈性映射功能

    映射模式下,TMR2的overflow事件產生DMA請求只在某固定通道下,通過彈性映射功能,可以將其定義到DMA的任意通道。 6) 下載程序,通過抓取PC口的波形觀察結果。
    發表于 12-12 16:04

    CW32L052 DMA直接內存訪問介紹

    傳輸,如FLASH存儲器、UART串口、TIM定時器、ADC數模轉換器等被配置為DMA通道的觸發源時, 可以產生DMA請求(DMA req
    發表于 12-12 07:21

    哪些場景適合使用DMA

    。 串行通信(UART,SPI,I2C等): UART:在大量數據收發時,例如通過串口接收一幀數據或發送一幀數據,可以使用DMA來搬運數據。比如,使用DMA
    發表于 11-12 07:13

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

    發送功能,讓數據不經CPU直接從內存(txbuffer)傳輸到串口的發送端,然后使用串口DMA接收功能接收10個字節的數據,保存到rxbu
    發表于 10-30 08:29

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

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

    串口DMA接收方式打開,為什么在開啟IDLE中斷的情況下還需要開啟DMA中斷呢?

    如圖,在以 RT_DEVICE_FLAG_DMA_RX 方式打開串口時,底層會配置串口IDLE中斷,同時也會打開DMA中斷,DMA中斷在
    發表于 09-29 08:30

    串口DMA接收數據包丟失怎么解決?

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

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

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

    完全按照rt-thread 里的串口DMA接收寫的,接收內存無論怎么擴大還是報錯,為什么?

    完全按照rt-thread 里的串口DMA接收寫的,還是接收內存無論怎么擴大還是報錯. Warning: There is no enough buffer for saving d
    發表于 09-25 07:16

    STM32H743 UART DMA接收不到數據是為什么?

    ;find %s failed!n\", \"uart3\"); return RT_ERROR; } /* 以 DMA 接收及輪詢發送方式打開串口設備
    發表于 09-11 07:14

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

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

    求助,關于stm32H7多DMA數據流問題求解

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

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

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

    無法配置 ADC1 來觸發 DMA 傳輸,怎么解決?

    SCU->DMAP_ADC.bit.ADC1_SQ1 = 1u;并配置和啟用DMA。 考慮通過 SQ1 事件觸發 DMA 通道 3,我認為這應該是 SQ1 轉換結束事件。 DMA
    發表于 07-21 06:57

    第十五章 DMA

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