日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] 三.中斷方式的串口編程1.用中斷方式編寫串口程序由那幾部分組成2.硬件上的支持1>UART0發(fā)送FIFO緩沖區(qū)A.UART0含有1個16字節(jié)的發(fā)送FIFO緩沖區(qū)B.U0THR是UART0發(fā)送FIFO的最高字節(jié)C.UART的發(fā)送FIFO是一直

三.中斷方式的串口編程

1.用中斷方式編寫串口程序由那幾部分組成


2.硬件上的支持

1>UART0發(fā)送FIFO緩沖區(qū)

A.UART0含有1個16字節(jié)的發(fā)送FIFO緩沖區(qū)

B.U0THR是UART0發(fā)送FIFO的最高字節(jié)

C.UART的發(fā)送FIFO是一直使能的

2>UART0接收FIFO緩沖區(qū)

A.UART0含有一個16字節(jié)的接收FIFO緩沖區(qū)。

B.軟件設置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。


3>中斷接口:UART0的中斷接口包含中斷使能寄存器(U0IER)和中斷標識寄存器(U0IIR)。

lU0IIR:提供狀態(tài)碼用于指示一個掛起中斷的中斷源和優(yōu)先級。

lU0IER可以控制UART0的4個中斷源。

4>UART0有4個中斷源:

A.RLS(接收線狀態(tài))中斷:

(1)優(yōu)先級最高

(2)它在以下條件發(fā)生時產生錯誤

l幀錯誤(FE)

l溢出錯誤(OE)

l奇偶錯誤(PE)

l間隔中斷(BI)

注:

?可以通過查看U0LSR[4:1]中的值看到產生該中斷的錯誤條件

?讀取U0LSR寄存器時清除該中斷。

B.RDA(接收數據可用)中斷:

(1)與CTI中斷并列第二優(yōu)先級。

(2)在以下情況觸發(fā)中斷:

l當接收的有效數據到達接收FIFO設置寄存器(U0FCR)中設置的觸發(fā)點時,RDA被激活。當接收FIFO中的有效數據少于觸發(fā)點時,RDA復位。

l中斷過程:

1>移位寄存器(U0RSR)從RxD引腳接收串行數據后,送入接收FIFO中

2>當接收FIFO中的有效數據數量達到預定的觸發(fā)點時,置位RDA中斷。

3>從U0RBR寄存器中讀取FIFO中最早到達的數據,當FIFO中的有效數據小于觸發(fā)點時,清零RDA中斷。

C.CTI(字符超時指示)中斷

(1)優(yōu)先級為2.

(2)在以下情況發(fā)生中斷:

l當接收FIFO中的有效數據少于預定的觸發(fā)點數量時,如果在一定時間內仍沒有接收到新的數據,那將觸發(fā)該中斷。

(3)上面的時間指的是:3.5~4.5個字節(jié)所需要的時間。

(4)對接收FIFO的任何操作都會清零該中斷標志。

(5)中斷過程:

l移位寄存器(U0RSR)從RxD0引腳接收串行數據后,送入接收FIFO中。

l當接收FIFO中的有效數據少于觸發(fā)個數,但如果長時間沒有數據到達,則觸發(fā)CTI中斷。

l從U0RBR中讀取接收FIFO中的數據,或者有新的數據送入接收FIFO,都將清零CTI中斷。

注:

?3.5~4.5個字節(jié)的時間:指在串口當前的波特率下,發(fā)送3.5~4.5個字節(jié)所需要的時間。

?當接收FIFO中存放多個數據,從U0RBR讀取數據,但是沒有讀完所有數據,那么在經過3.5~4.5個字節(jié)的時間后觸發(fā)CTI中斷。

D.THRE(發(fā)送)中斷

(1)優(yōu)先級為第三級優(yōu)先級。

(2)當FIFO為空并且在以下情況觸發(fā)中斷:

l系統(tǒng)啟動時,雖然發(fā)送FIFO為空,但不會產生THRE中斷。

l在上一次發(fā)生THRE中斷后,向發(fā)送FIFO中寫入1個字節(jié)數據,將在一個字節(jié)加上一個停止位后發(fā)生THRE中斷

(because:如果發(fā)送移位寄存器為空,那么寫入發(fā)送FIFO的數據將直接進入發(fā)送移位寄存器。此時發(fā)送FIFO仍然為空,如果立即產生THRE中斷,就會影響緊接著寫入發(fā)送FIFO的數據。

所以在發(fā)送完該一個字節(jié)以及一個停止位后,才產生THRE中斷。

l如果在發(fā)送FIFO中有過兩個字節(jié)以上的數據,但是現在發(fā)送FIFO為空時,將立即觸發(fā)THRE中斷。

l當THRE中斷為當前有效的最高優(yōu)先級中斷時,往U0THR寫數或者對U0IIR的讀操作,將使THRE中斷復位

我們來看看這些中斷源與存儲器之間的關系:

注:

?由上圖可知:UART0有4個中斷源:分別是RLS(線狀態(tài))中斷,RDA(接收數據)中斷,CTI(字符超時)中斷,THRE(發(fā)送數據)中斷。

?4個中斷源的優(yōu)先級如下圖所示:

3.串口中斷接收初始化


1>串口中斷接收初始化流程

l設置I/O引腳連接到UART0

l置位除數鎖存位,配置UART0幀數據格式

l根據波特率計算分頻值

l設置波特率

l清除除數鎖存位,并設置工作模式

l使能FIFO,并設置觸發(fā)點

l允許RBR中斷

注:我們可以發(fā)現與輪訓方式相比,中斷方式只是增加了使能FIFO,并設置中斷觸發(fā)點和允許RBR中斷兩步。

2>中斷串口初始化需要配置的寄存器

(與輪循方式配置方法相同的寄存器在此處不在涉及)

lU0FCR(FIFO控制寄存器):U0FCR控制UART0 Rx和Tx FIFO的操作。

lU0IER(中斷使能寄存器):U0IER用于使能4個UART0中斷源。

3>具體寄存器的配置

(1)U0FCR

A作用:控制UART0 Rx和Tx的操作。

B長度:8位寄存器。

C:每一位的含義:

l第0位:表示FIFO使能

置1:表示使能對UART0 Rx和Tx的FIFO以及U0FCR[7:1]的訪問。

置0:表示不能使用Rx和Tx的FIFO以及步能對U0FCR[7:1]的訪問。

注:該位的任何變化都將使UART0 FIFO清空。

l第1位:表示Rx FIFO的復位。

置1:會清零UART0 RxFIFO中的所有字節(jié)并復位指針邏輯。該位自動清零。

l第2位:表示Tx FIFO的復位。

置1:會清零UART0 TxFIFO中的所有字節(jié)并復位指針邏輯。改位自動清零。

l第[5:3]位:保留位,用戶不能對其進行操作。從保留位讀出的值未被定義。

l第[7:6]位:表示Rx觸發(fā)選擇

00:觸發(fā)點為0(默認為1字節(jié))

01:觸發(fā)點為1(默認為4字節(jié))

10:觸發(fā)點為2(默認為8字節(jié))

11:觸發(fā)點為3(默認為14字節(jié))

注:這兩個位決定在激活中斷之前,接收UART0 FIFO必須寫入個字符。

(2)U0IER(中斷使能寄存器)

A作用:U0IER用于使能4個UART0中斷源

B長度:8位寄存器

C每一位的含義:

l第0位:表示RBR中斷使能

置1:使能RDA中斷

置0:禁止RDA中斷

注:U0IEER第零位使能UART0接收數據可用中斷。它還控制(CTI)字符接收超時中斷。

l第1位:表示THRE中斷使能

置1:使能THRE中斷

置0:禁止THRE中斷

l第2位:表示Rx線狀態(tài)中斷使能

置1:使能Rx線狀態(tài)中斷

置0:禁止RX線狀態(tài)中斷

注:U0IER第二位使能UART0 Rx線狀態(tài)中斷。該中斷的狀態(tài)可從U0LSR[4:1]讀出

l第[7:3]位:是保留位

注:用戶不能向其寫入1.

4>串口初始化程序:

***********************************************************

*作者:tiger-john

*時間:2011年1月18日

*名稱:UART0_Init

*功能:UART0初始化通訊波特率115200,8位數據位,1位停止位,無奇偶校驗

*接收FIFO觸發(fā)點為8字節(jié),使能RDR(接收數據)中斷

*入口參數:bps串口波特率

*出口參數:無

****************************************************************************/

voidUART0_Init(uint32 bps)

{

uint16Fdiv;

PINSEL0 = (PINSEL0 & ~(0xf) " 0x05) ;//設置UART0的引腳

U0LCR = 0x83;//置為除數鎖存位,進行配置

Fdiv = (Fpclk>>4)/bps;

U0DLM = Fdiv>>8;

U0DLL = Fdiv%256;

U0LCR = 0x03;//清除除數鎖存位,并設置工作模式

U0FCR = 0x81;//使能FIFO,并設置觸發(fā)點為8字節(jié)

U0IER = 0x01;//允許RBR中斷,即接收中斷

}

5.中斷初始化

先來看一下UART0和VIC之間的關系:


1>中斷初始化流程:

l選擇中斷為向量中斷或快速中斷

l分配中斷通道

l設置UART0向量地址

l使能UART0中斷

2>關于ARM中斷編程方法和寄存器的使用在此不做涉及(如果想知道的話,可以看這篇文章http://blog.csdn.net/tigerjb/archive/2010/11/30/6045409.aspx

3>中斷初始化程序:

/**********************************************************

*作者:tiger-john

*時間:2011年1月18日

* 名稱: Interrupt_Init

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

串口全稱是串行接口(Serial Interface),串口通訊指僅用一對傳輸線就能將數據以比特位進行傳輸的一種通訊方式。盡管串口通訊必按字節(jié)傳輸的并行通信慢,但是串口可以在僅用兩根線的情況下完成數據傳輸,大大降低了成本...

關鍵字: 串口 UART

隨著電腦技術的發(fā)展,一些老的設備在新電腦上不能被使用,主要原因是不管是臺式電腦,還是筆記本電腦,都很少有串口接口,也就是我們常說的COM口。好在這些設備都有USB接口,不妨通過接口轉換的方式,使我們的設備在新電腦上重新被...

關鍵字: 串口 USB

串口:串口是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通信時序協(xié)議,因此都被通稱為串口。串口通訊應用是工控人必須掌握的一個技能,幾乎在每一個項目中都會用到,今天我們就來詳細比較一下它們究竟有何區(qū)別。

關鍵字: 串口 協(xié)議

在嵌入式開發(fā)過程中,許多系統(tǒng)通常使用串口驅動來滿足通信要求,但在實際應用中,使用SPI通信方式會更加高效和快捷。

關鍵字: 串口 驅動

串口WiFi模塊作為新一代嵌入式WiFi模塊,因其體積小、功耗低的特點,廣泛應用于物聯(lián)網、智能家居等領域。

關鍵字: 串口 WiFi模塊 嵌入式

在現代嵌入式系統(tǒng)設計中,FPGA(現場可編程門陣列)的靈活性和可重構性使其成為許多應用的理想選擇。而在FPGA的開發(fā)和部署過程中,如何實現遠程升級和故障恢復成為了一個重要議題。本文將詳細探討如何通過BPI FLASH實現...

關鍵字: FPGA 串口 MultiBoot 嵌入式系統(tǒng)

在現代電子設計中,FPGA(現場可編程門陣列)因其高度的靈活性和可重構性,成為眾多領域的核心組件。特別是在需要動態(tài)更新或調整系統(tǒng)功能的場景中,FPGA的串口升級和MultiBoot功能顯得尤為重要。本文將深入探討FPGA...

關鍵字: FPGA 串口 MultiBoot

之前有個同事因為用串口查詢方式發(fā)送數據,被我說了一頓,明明有DMA資源,竟然放著不用,對于魚鷹這種性能強迫癥來說,肯定無法忍受,所以當時就和他說,有時間你把它改一下。誰知道過了好幾個月他才有時間弄這個,然后還是出了問題,...

關鍵字: DMA 串口

串行通訊是指僅用一根接收線和一根發(fā)送線就能將數據以位進行傳輸的一種通訊方式。盡管串行通訊的比按字節(jié)傳輸的并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實現數據的傳輸。

關鍵字: 串口 串行通信

在下述的內容中,小編將會對手把手教大家如何去實現RA UART實現串口波特率自適應,如果串口波特率自適應內容是您想要了解的焦點之一,不妨和小編共同閱讀這篇文章哦。

關鍵字: 串口 波特率 UART
關閉