問題描述:使用STM32 cube生成usart2 DMA direct mode(不使用FIFO,normal模式,STM32f407)配置代碼,usart2可以使用阻塞方式發送,使用DMA發送則只能發送第一次,復位后還只能發送一次。
單步調試發現DMA方式下的發送在發送第一次之后,husart->State 標志變為 HAL_USART_STATE_BUSY就再也不變了。比較直接的解決思路就是在DMA發送中斷中給這個標志修改為HAL_USART_STATE_READY,修改之后還是不好用(我認為是可以通過修改多個相關寄存器解決的,但是個人傾向于不深入了解其寄存器,而是用封裝度更高的HAL系列函數)。
讀stm32f4xx_hal_usart.c(V1.5.0)文件的前面關于如何使用HAL函數的部分并與配置代碼比較并沒有發現問題,但是看stm32f1xx_hal_usart.c(V1.0.0)在同樣的位置多了如下文字:
(+++) Configure the USARTx interrupt priority and enable the NVIC USART IRQ handle
(used for last byte sending completion detection in DMA non circular mode)
翻看STM32F4系列早于1.5.0的文件都沒有這句,可能是官方的疏忽或者是個人理解不到位,總之增加了USART2中斷之后(cube生成的),usart DMA發送是完全正常了。
上一篇:在STM32F中使用UCOSII如何支持低功耗模式
下一篇:串口使用DMA發送數據時的數據覆蓋問題
推薦閱讀
史海拾趣
為了進一步增強自身實力,APDI積極尋求與其他公司的并購與合作機會。它成功收購了一家在半導體制造領域具有領先技術的公司,從而完善了自身的產品線和技術體系。同時,APDI還與多家行業巨頭建立了戰略合作關系,共同研發新技術和新產品,實現了資源共享和優勢互補。
在公司的快速發展過程中,睿赫公司高度重視團隊建設和人才培養。公司建立了一套完善的人才選拔和培養機制,吸引了一批優秀的電子工程師和技術人才加入。同時,公司還注重員工的職業發展和福利待遇,為員工提供了廣闊的發展空間和良好的工作環境。
通過團隊建設和人才培養,睿赫公司的研發團隊逐漸壯大,創新能力也得到了極大的提升。這使得公司能夠在激烈的市場競爭中保持領先地位,不斷推出具有競爭力的新產品。
背景:隨著業務的不斷增長,Force Technologies Ltd意識到單一市場已無法滿足其發展需求。于是,公司制定了明確的國際化戰略,旨在將產品和技術推向全球。
發展:通過在歐洲、北美和亞洲等地設立研發中心和生產基地,Force Technologies Ltd成功構建起全球化的運營網絡。同時,公司還積極參與國際展覽和交流活動,不斷提升品牌知名度和影響力。在國際市場的推動下,公司的銷售額和市場份額均實現了快速增長。
作為電子行業的領軍企業之一,宇陽科技始終堅持以創新為驅動的發展戰略。公司不斷投入研發資金,加強技術團隊建設,積極引進先進技術和管理經驗。通過持續創新和技術升級,宇陽科技成功推出了多款具有自主知識產權的新型電子元器件產品,并引領了行業潮流。同時,公司還積極參與行業標準制定和技術交流合作等活動,為推動電子行業的發展做出了積極貢獻。
以上五個故事梗概概述了宇陽科技在電子行業中的發展歷程和主要成就。這些故事不僅展現了公司的技術實力和市場地位,也體現了公司不斷創新、追求卓越的發展理念。
電阻應變式稱重傳感器是基于這樣一個原理:彈性體(彈性元件,敏感梁)在外力作用下產生彈性變形,使粘貼在他表面的電阻應變片(轉換元件)也隨同產生變形,電阻應變片變形后,它的阻值將發生變化(增大或減小),再經相應的測量電路把這一電阻變化 ...… 查看全部問答∨ |
|
以前我用c#來做wince程序開發,覺得好方便。 現在公司用c++來做,我新建了幾個項目(c++)發現和c#建立的有很大的差別, c#是基于net compack framework的,c++是基于mfc和win32的。 請問大家,是這樣的嗎?我第一次做,不太懂。 另外,wince現 ...… 查看全部問答∨ |
|
那個C:\\WINCE500\\PLATFORM\\COMMON\\SRC\\COMMON\\INTR\\BASE\\map.c編譯生成了一個oal_intr.lib,在C:\\WINCE500\\PLATFORM\\SMDK2440A\\Src\\Inc\\oal_intr.h這個東西聲明了map.c里面的函數,是不是表示包含了oal_intr.h這個文件就能調用map.c ...… 查看全部問答∨ |
|