chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

代碼:

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

100059078-113575-x1.png

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

100059078-113576-x2.png

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

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

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

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

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

    關(guān)注

    116

    文章

    5842

    瀏覽量

    223637
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1604

    瀏覽量

    81866
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    577

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    哪些場景適合使用DMA?

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

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

    發(fā)送功能,讓數(shù)據(jù)不經(jīng)CPU直接從內(nèi)存(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模式就認(rèn)為是數(shù)據(jù)已經(jīng)結(jié)束了一樣。 代碼調(diào)試部分 換成非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ā)送不行,是什么地方?jīng)]有設(shè)置對嗎?

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

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

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

    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

    求助,關(guān)于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(直接存儲器存?。淇稍诓徽加肅PU的情況下搬數(shù)據(jù),支持多種傳輸方向,含控制器、通道等配置及相關(guān)實驗代碼。
    的頭像 發(fā)表于 06-14 16:32 ?1083次閱讀
    第十五章 <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外設(shè)時,ADC使用兩個通道。DMA配置為循環(huán)模式,ADC掃描模式+非連續(xù)采樣。 問題:初始化階段能進一次DMA傳輸完成中斷,在main函數(shù)中再次開啟ADC轉(zhuǎn)化
    發(fā)表于 03-12 07:10

    CKS32F107xx系列的DMA控制器簡介

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

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

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

    ZYNQ基礎(chǔ)---AXI DMA使用

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