在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

使用CubeMx怎么配置不了UART的DMA?

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-07-05 10:34 ? 次閱讀

STM32用戶反映,他目前使用STM32F407VE的芯片開發產品,在使用CubeMx做初始化配置時發現沒法給UART5配置基于該外設事件的DMA請求。他覺得很奇怪,堅信UART5是可以申請DMA傳輸的,而且他還基于早期CubeMx 版本配置過、使用過。

他剛好最近對CubeMx升級到5.5.0了,懷疑是不是STM32CubeMx5.5以上版本的bug。

說到這里,可能有人還不是沒完全明白具體怎么回事。我們結合他給過來得截圖一起來看看。他在對uart5做配置時出現的界面是下面這樣的,連那個DMA配置的菜單都沒有。

基于他的反饋,我用目前最新的CubeMX版本5.6.1進行驗證,同樣對STM32F407VE的UART5進行配置并試著為其申請DMA傳輸。經過測試并沒有碰到他所說的問題。

那問題出在哪兒呢?

我的測試工程只是單純使用到UART5,并未使用其它外設及相關DMA應用。我結合他反饋過來的配置截圖,隱約發現他的工程應用中并不僅僅使用一個UART5外設,還用到了其它外設。會不會是他在配置其它外設并申請DMA請求時,把UART5可以申請的DMA流占用了呢?

我們先不妨打開STM32F4系列參考手冊的DMA章節,看看有關外設事件與DMA傳輸流的映射關系圖。從手冊中我們可以看到,UART5的TX/RX事件能申請DMA毫無疑問,但只能申請DMA1_S0和DMA1_S7。

然而呢,可以申請DMA1_S0和DMA1_S7的外設事件又有很多,比方TIM4_CH1和TIM4_CH3就可以分別申請DMA1_S0和DMA1_S7。如果說,在做UART5事件的DMA配置之前,若有別的外設事件已經將DMA1_S0和DMA1_S7申請走了,這時UART5就應該沒得申請了。

基于上面分析,我們可以進一步驗證下。

我們使用上面提到得TIM4_CH1和TIM4_CH3先將DMA1_S0和DMA1_S7申請走,再來嘗試為UART5申請DMA,看看會怎么樣。結果CubeMX提示該外設請求無效,不能申請DMA了。如下圖所示:

提示界面跟客戶反饋的不太一樣,應該是CubeMx版本的差異所致。表達的基本意思還是相同的,即此時沒法為UART5事件申請DMA傳輸。

到此,客戶反饋的問題原因也基本清晰。像這種情況,由于UART5的TX/RX事件要申請的DMA流固定了,我們可以看看目前占用uart5欲申請的DMA流的外設,他們是否可以做調整去申請別的DAM流,從而避免競爭。因為有些外設事件可能申請的DMA流不只一條,當然這要結合具體的芯片。以STM32F4芯片為例,下圖中的TIM1_CH1,SPI1_RX,SPI1_TX可申請的DMA傳輸流都不只一條。

或許有人知道,STM32家族中有些系列支持DMAMUX,如果有它做DMA配置就更方便、高效。但不管怎樣,DMA請求事件肯定要遠遠多于具體實施傳輸的DMA流,所以具體應用中并不能保證有申請DMA資格的事件就一定申請得到相應的DMA傳輸。就像你有錢也有資格坐飛機坐高鐵,但并不能保證你時刻可以買到你期望的機票或火車票而成行。

再結合到本案例,遇到兩個外設事件對一個DMA傳輸流發生競爭不可避免的時候,若兩個外設對DMA的使用在時間上可以錯開的話,也還是有辦法解決的。我們可以使用CubeMx分別基于兩個外設的DMA請求事件生成兩套配置,然后手動調整代碼,需要使用哪個外設事件的DMA傳輸時就啟用相應的DMA配置及應用函數。總之,搞清了怎么回事,結合具體應用靈活處理就好。

最后小結下。針對上面的客戶問題,如果對CubeMx工具的使用不熟或者說只是機械地使用該工具做配置,心里沒有些基本原理做支撐的話,遇到該問題時恐怕一時也的確難以找到方向。在此分享,權作提醒。

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

    關注

    457

    文章

    51285

    瀏覽量

    427855
  • uart
    +關注

    關注

    22

    文章

    1245

    瀏覽量

    101824
  • dma
    dma
    +關注

    關注

    3

    文章

    566

    瀏覽量

    101033

原文標題:使用CubeMx怎么配置不了UART的DMA?

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在rtt studio使用qspi dma就是進不了中斷,為什么?

    的while循環語句中死等: 后來我在cubeMx如下配置dma: 然后用cubeMx生成mdk工程,在main()函數調用以下庫函數,能讀取w25q64的id, 證明其實
    發表于 09-27 07:03

    MSPM0 UART通信中DMA和Ring Buffer環形緩沖的應用

    電子發燒友網站提供《MSPM0 UART通信中DMA和Ring Buffer環形緩沖的應用.pdf》資料免費下載
    發表于 09-05 11:01 ?0次下載
    MSPM0 <b class='flag-5'>UART</b>通信中<b class='flag-5'>DMA</b>和Ring Buffer環形緩沖的應用

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

    。 本篇文章主要介紹如何使用STM32CubeMX實現串口DMA讀取,并且打印出去。QQ群:615061293。 硬件準備 首先需要準備一個開發板,這里我準備的是NUCLEO-F030R8的開發板
    發表于 09-04 11:48

    RL78系列MCU DMAUART中的使用

    對于RL78系列的MCU,為了提高運行效率,減少CPU的占用,建議UART數據收發使用DMA功能。DMA(Direct Memory Access)是RL78 MCU內置的一個控制器,能在支持
    的頭像 發表于 07-17 14:24 ?762次閱讀
    RL78系列MCU <b class='flag-5'>DMA</b>在<b class='flag-5'>UART</b>中的使用

    想在PWM的中點觸發ADC采樣,使用Cubemx配置一直實現不了,為什么?

    您好! 我現在遇到個問題,就是想在PWM的中點觸發ADC采樣,使用Cubemx配置一直實現不了,還請大神指點
    發表于 06-03 07:47

    stm32L051用cubemx配置不了CMOP是怎么回事?

    求教stm32L051用cubemx配置不了CMOP? 我用STM32CUBEMX配置了COMP1,程序里運行了初始化函數MX_COMP1
    發表于 05-06 07:07

    STM32F030F4上使用CubeMX配置ADC+DMA循環采集無法提取數據的原因?

    如題,使用STM32CubeMX配置了F030的ADC+DMA循環采集,ADC啟動后OVR一直處于置為狀態,但是DR寄存器輸出的數據又是正常的,我使用std庫已經配置并實現了功能,使用
    發表于 04-16 08:20

    STM32CubeMX配置STM32L4R9ZI的硬件SDMMC缺少DMA Settings配置是怎么回事?

    STM32CubeMX配置STM32L4R9ZI的硬件SDMMC1,缺少DMA Settings配置
    發表于 04-08 07:25

    STM32G071串口1無法使用DMA收發是為什么?

    單片機有UID(G030沒有UID),所以更換單片機為G071CB,使用CUBEMX配置,串口1和串口2都使用DMA收發數據,結果串口2的收發沒有任何問題,串口1發不出去數據,也接收不了
    發表于 04-01 07:46

    使用CubeMX生成STM32F103C8T6的DMA ADC代碼為什么無效?

    請問各位,我使用CubeMX生成STM32F103C8T6的DMA ADC代碼,工程配置請看附件,我運行如下代碼為什么無效: /* USER CODE BEGIN Includes
    發表于 03-29 06:08

    使用CubeMX配置STM32F407VGT6的SPI DMA發送16位數據,時鐘有波形的原因?

    使用CubeMX配置STM32F407VGT6的SPI DMA發送16位數據,時鐘有波形,MOSI無數據,上電就是高電平,其他CLK有波形的時候也還是高電平,發送的數據是0x0001和0x0000
    發表于 03-28 07:40

    關于STM32L051C8T6芯片LPUART+DMA接收問題求解

    ,其中UART2的接收是能夠回顯的。但是LPUART就無法做到回顯。兩者之間除了中斷優先級之外其他基本都一樣。我也查閱了文檔,看是否是STM32CUBEMX生成程序配置錯誤的原因,結果也不是。 是LPUART不支持
    發表于 03-28 07:05

    STM32F103使用cubemx配置ADC和DMA導致delay函數無法使用怎么解決?

    CUBEMX配置完adc和dma后在主函數中調用函數HAL_ADC_Start_DMA( hadc1,(uint32_t *) DMA_v
    發表于 03-28 06:21

    STM32U575VGT6 standard request mode配置之后用不了是怎么回事?

    這個standard request mode 配置了之后用不了,會有hard fault error define printf_dma(...)HAL_UART_Transmit_DMA
    發表于 03-12 06:19

    STM32F405 uart DMA收發數據輸出亂碼怎么解決?

    利用dma+ldle接收數據,使用STM32cubemx生成driver,使用hal庫發現僅能接收一次數據,然后串口busy無法再次觸發中斷,然后使用標準庫編寫測試代碼,數據接收問題解決,數據輸出
    發表于 03-08 07:38
    主站蜘蛛池模板: 中文字幕网资源站永久资源 | 成年网站在线播放 | 日本高清午夜色wwwσ | 日本欧美一区二区免费视 | 国产人人看 | 日本亚洲欧美美色 | 日日碰狠狠添天天爽五月婷 | 国产va在线观看 | 成人午夜视频免费看欧美 | 久久99热精品这里久久精品 | 狠狠色噜噜狠狠狠狠98 | 天天爽夜夜爽夜夜爽精品视频 | 五月婷婷激情综合网 | 窝窝午夜看片免费视频 | 亚洲国产网| 欧美洲视频在线观看 | 天天草天天干天天 | 五月婷婷丁香综合 | 久久精品免视看国产成人2021 | 三级视频网站在线观看 | 天堂资源中文官网 | 四虎院影永久在线观看 | 欧洲乱码专区一区二区三区四区 | 亚洲精品精品一区 | 三级黄色片免费观看 | 亚洲国产网址 | 欧美精品一级 | 久青草视频在线 | 午夜欧美福利 | 国产在线高清精品二区色五郎 | 亚洲精品久久久久午夜三 | 国产在线成人一区二区 | 日韩一级片在线 | 苍井优一级毛片免费观看 | 中文字幕在线天堂 | 欧美大全| 毛片爽爽爽免费看 | 插插操操| 色婷婷成人| 在线免费看黄的网站 | 四虎精品免费永久在线 |