我們在單片機開發中,經常會用到串口,這時候我可以通過使用DMA,減少CPU的占用。使用串口的空閑中斷可以完成不定長數據的接受。所以本次我們從基礎的外設移植開始完成此款板子的體驗。
首先看下板子吧。
板子整體還是GD一貫風格,還是白色板子,這次由于芯片的管腳較小,目前所以引出方式變了。把可以用的IO都引出了。
本次我們使用串口0進行測試,此測試完成后我們也可以非常方便的移植到串口1上。

我在其基礎上移植了新的開發模板,主要導入我們的外設庫和CMSIS庫即可。例程上我使用了一個閃爍LED燈的例子。

主循環中我們就兩個任務,一個是點燈,一個是完成串口接收和發送。

在串口初始話的時候需要主要下,我們使能了串口的中斷后,還需要打開其串口的空閑中斷,不然進不了接受中斷函數中。

中斷函數中我們只需要完成中斷服務函數的編寫,進入串口接收空閑中斷后,就讓其使用DMA的方式接收處理數據。
串口發送結束后也會調用函數關閉其發送。

效果就是只要我們數據在100字節以內都可以完成數據接受和發送。且長度可變。
關鍵字:串口 空閑中斷 不定長數據
引用地址:
基于GD32F310使用串口的空閑中斷完成不定長數據的接收
推薦閱讀最新更新時間:2025-04-15 17:24
STM32-4-NVIC與串口
STM32有好幾個串口。比如說STM32F103ZET6有5個串口,串口1的引腳對應的IO為PA9,PA10.PA9,PA10默認功能是GPIO,所以當PA9,PA10引腳作為串口1的TX,RX引腳使用的時候,那就是端口復用。 復用端口初始化有幾個步驟: 1) GPIO端口時鐘使能。要使用到端口復用,當然要使能端口的時鐘了。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 2) 復用的外設時鐘使能。比如你要將端口PA9,PA10復用為串口,所以要使能串口時鐘。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USAR
[單片機]
關于串口工作方式
單片機89C51的串行端口有4種工作方式,通過編程設計,可以使其工作在任一方式,以滿足不同場合的需要。其中, 方式0主要用于外接移位寄存器,以擴展單片機的I/O電路; 方式1主要用于雙機之間或外設電路的通信; 方式2、3除有方式1的功能外,還可用作多機通信,以構成多微機系統,方式2、3的區別在于波特率的不同。 單片機的串行通信的波特率可以程控設定,在不同的工作方式下,由時鐘振蕩頻率的分頻值或由定時器T1的定時溢出時間確定。 單片機的串行端口有2個控制寄存器,用來設置工作方式、發送或接收的狀態、特征位、數據傳送的波特率以及中斷標志TI和RI。單片機的串行端口有1個數據寄存器SBUF,該寄存器為發送和接收所共有,在一定條件
[單片機]
嵌入式硬件通信串口啟用流程
一、串口啟用流程 開講前,先找幾款芯片的串口demo程序瞄一眼。 依次有STM32的V3.5標準庫、nRF52832的官方demo以及51核的STC15系列單片機的官方DEMO。 從以上的部分demo例程來看,在啟用串口的時候,需要配置的那幾個參數有波特率、數據位、校驗位、停止位等,從demo的源碼中也是能夠體現出來的。 而略有不同的是,在引腳配置靈活的ARM中,需要針對引腳進行配置。 二、驗證輸入輸出 完成了串口的初始化,即可對輸入輸出進行操作,來驗證串口是否可以正常的發送和接收數據。 一般的,最直接的方式就是向輸出寄存器寫入數據,就可以讓芯片去完成UART信號輸出到對應的引腳上。 如下圖依次有STM32的V3.5標
[單片機]
基于STM32V評估板的嵌入式實時操作系統μC/OS-II串口通信設計
ARM是目前嵌入式領域中應用最廣泛的RISC微處理器結構,以低成本、低功耗、高性能的特點占據了嵌入式系統應用領域的領先地位,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場。STM32F103VB是基于ARM新內核Cortex-M3的通用微處理器,STM32V評估板是基于該芯片的學習板并集成了仿真調試器(Ulink_Me),可以方便用戶快速學習和開發用戶程序。目前常見的嵌入式系統有:WinCE、Linux、pSoS、VxWorks和μC/OS-II等。μC/OS-Ⅱ是專門為嵌入式系統應用設計的,具有源碼公開、實時性好、可移植裁剪、高效穩定和教學科研免費使用等特點,已經成功移植到8、16、32和64位等多種
[單片機]
stm32 usb轉串口的程序設計解析
串口調試在項目中被使用越來越多,串口資源的緊缺也變的尤為突出。很多本本人群,更是深有體會,不準備一個USB轉串口工具就沒辦法進行開發。 了解USB虛擬串口,為了在項目中用一下這個USB,調試方便一些,供電可直供。公司以后的產品開發就基于STM32這個平臺,從contex_M3到contex-M4。不管速度、功耗、價格、采購的方便性都有競爭力,不想再修改了(除非它無法滿足要求)。 STM32基本上都帶有USB串口。如果不把它用上而另外加一個USB轉串口單元,未免顯得太落后了而且也是一種資源的浪費。順便說一下,根據公司的狀況,合適的才是好的。以前一直用TI的,從430到ARM到28XX。這個ST的包含了以前的所有,
[單片機]
51內核軟件延時和串口的巧妙方法介紹
不知道大家學習51是怎么過來的,反正我是一路忽悠過來的。現在用51來開發產品必須要充分用到它的內部資源,本來主頻、資源就比不上32,不充分的利用怎么才能開發好的產品,那么今天我又學習到兩個小技能:延時和串口的發送中斷 情況是這樣的,在產品的開發中,遇到了74HC595控制數碼管,這個數字邏輯芯片用過的都知道,一位數碼管還好,要是有多位那就得不斷的刷新,為快不破,進而達到不同位顯示不同斷碼(數字)的效果。這個刷新頻率還有講究,我不知道我的理論對不對,反正我知道民用電50Hz接在燈泡上,人眼是看不出燈泡在不斷的閃爍的。那么就根據這個原理我只要保證在50Hz以上的頻率(20ms以內)及時的刷新一次顯示就行了。不過實際效果是我延時個5
[單片機]
STM32 DMA串口發送模式配置及使用簡單分享
贈人玫瑰,手有余香;很感謝網上其他樓主的分享;我這個貼子是關于STM32 DMA USART 發送模式的調試分享,我為什么要建這個帖子呢,因為我不想看到還有其他人跟我一樣,為了調通DMA串口,而花上大半天的時間,這很不利于大家高效率的開發,網上的經驗都是從頭教到尾的,內容極多,對于有點小經驗的人,或者是想很快達到目的的人,這個很不適合他們;我的這個很簡單(本帖不適合不熟悉配置STM32串口的玩家),他只是說串口的DMA怎么配置,還有我用的是DMA1_通道4,因為我的是串口1的TX長話短說:直接po代碼: DMA_InitTypeDef DMA_InitStruct; //DMA類型聲明 RCC_AHBPeriphC
[單片機]
IAR 串口調試,基于新唐n76e003的雙串口透傳程序設計
在解決好多bug后終于實現了雙串口之間的相互收發,但是主管說寫的程序很垃圾,但是終于能用了,還是很開心,在指導下會進一步修改,如果只是完成作業的話可以借鑒一下,話不多說,繼續碼上 在這里插入 //*********************************************************************************************************** // File Function: N76E003 UART-0 Mode1 demo code //************************************************************
[單片機]