freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm的gps定位信息顯示器的軟件設(shè)計(jì)-資料下載頁(yè)

2025-06-22 03:34本頁(yè)面
  

【正文】 。 串口驅(qū)動(dòng)程序本設(shè)計(jì)使用LPC2292 UART0接收GPS輸出的定位信息,LPC2292的UART0的特點(diǎn)是具有16 字節(jié)接收FIFO、16字節(jié)發(fā)送FIFO,接收器FIFO觸發(fā)點(diǎn)可為1,4,8和14字節(jié),內(nèi)置波特率發(fā)生器。 串口結(jié)構(gòu)圖 UART0結(jié)構(gòu)方框圖。 UART0方框圖UART0接收器模塊U0RX監(jiān)視串行輸入線RxD0的有效輸入。UART0 Rx移位寄存器(U0RSR)通過RxD0接收有效的字符。當(dāng)U0RSR接收到一個(gè)有效的字符時(shí),它將該字符傳送到UART0 RX緩沖寄存器FIFO中,等待CPU通過VPB接口進(jìn)行訪問。UART0發(fā)送器模塊U0Tx接收CPU或主機(jī)寫入的數(shù)據(jù)并將數(shù)據(jù)緩存到UART0 Tx保持寄存器FIFO(U0THR)中。UART0 Tx移位寄存器U0TSR讀取U0THR中的數(shù)據(jù)并將數(shù)據(jù)通過串行輸出引腳TxD0發(fā)送。 串口的初始化串口初始化涉及到的寄存器有除數(shù)鎖存U0DLL、U0DLM、引腳功能選擇寄存器PINSEL0、UART0 FIFO控制寄存器U0FCR、UART0線控制寄存器U0LCR, UART0 中斷使能寄存器U0IER。其中除數(shù)鎖存U0DLL、U0DLM是用于設(shè)置串口通訊波特率,它保存了用于產(chǎn)生波特率時(shí)鐘的VPB時(shí)鐘(pclk)分頻值。由于波特率時(shí)鐘必須是波特率的16倍,因而所設(shè)的除數(shù)鎖存U0DLL、U0DLM分頻值是(Fpclk/16)/bps,bps是用戶要設(shè)置的波特率,常用波特率值是115200、57600、38400、19200 ……等,在本設(shè)計(jì)中使用9600的波特率與GPS模塊通訊。設(shè)置引腳功能選擇寄存器PINSEL0的1:0位與3:2位為01,、。UART0 FIFO 控制寄存器U0FCR 控制UART0 RX和TX FIFO的操作,置位U0FCR的0位是使能對(duì)UART0 Rx 和Tx FIFO以及U0FCR7:1的訪問,置位U0FCR的1位會(huì)清零,UART0 Rx FIFO 中的所有字節(jié)并復(fù)位指針邏輯,置位U0FCR的2位清零UART0 Tx FIFO 中的所有字節(jié)并復(fù)位指針邏輯,設(shè)置U0FCR的7:6位為10選擇觸發(fā)點(diǎn)2,默認(rèn)8個(gè)字節(jié)觸發(fā)。UART0線控制寄存器U0LCR決定發(fā)送與接收數(shù)據(jù)字符的格式,本設(shè)計(jì)中設(shè)置U0LCR的1:0位為11,即8位字符長(zhǎng)度,1個(gè)停止位,無(wú)奇偶產(chǎn)生和校驗(yàn)置位。設(shè)置UART0 中斷使能寄存器U0IER的位0為1, 使能RDA 中斷。串口初始化代碼:PINSEL0 = (PINSEL0amp。0xfffffff0)|5。 U0LCR = 0x80。 // 允許訪問分頻因子寄存器 Fdiv = (Fpclk / 16) / bps。 // 設(shè)置波特率 U0DLM = Fdiv / 256。 U0DLL = Fdiv % 256。 U0LCR = 0x03。 // 禁止訪問分頻因子寄存器 // 且設(shè)置為8,1,n U0FCR = 0x87。 // 初始化FIFO U0IER = 0x01。 // 串口接收數(shù)據(jù)程序設(shè)計(jì)本設(shè)計(jì)采用中斷方式接收GPS接收機(jī)輸出到串口的數(shù)據(jù),為了使用中斷接收數(shù)據(jù),除了對(duì)U0IER寄存器設(shè)置之外,還要對(duì)向量中斷控制器(VIC)進(jìn)行設(shè)置。① 向量中斷控制器(VIC)向量中斷控制器(VIC)的特點(diǎn)是:具有32個(gè)中斷請(qǐng)求輸入,可將其編程分為3類:FIQ、向量IRQ和非向量IRQ。可編程分配機(jī)制意味著不同外設(shè)的中斷優(yōu)先級(jí)可以動(dòng)態(tài)分配并調(diào)整??焖僦袛嗾?qǐng)求(FIQ)要求具有最高優(yōu)先級(jí)。如果分配給FIQ的請(qǐng)求多于1個(gè),VIC將中斷請(qǐng)求“相或”后向ARM處理器產(chǎn)生FIQ信號(hào)。當(dāng)只有一個(gè)中斷被分配為FIQ時(shí)可實(shí)現(xiàn)最短的FIQ等待時(shí)間,因?yàn)镕IQ服務(wù)程序只要簡(jiǎn)單地啟動(dòng)器件的處理就可以了。但如果分配給FIQ級(jí)的中斷多于1個(gè),F(xiàn)IQ服務(wù)程序從VIC中讀出一個(gè)字來識(shí)別產(chǎn)生中斷請(qǐng)求的FIQ中斷源是哪一個(gè)。向量IRQ具有中等優(yōu)先級(jí)。該級(jí)別可分配32個(gè)請(qǐng)求中的16個(gè)。32個(gè)請(qǐng)求中的任意一個(gè)都可分配到16個(gè)向量IRQ slot中的任意一個(gè),其中slot0具有最高優(yōu)先級(jí),而slot15則為最低優(yōu)先級(jí)。非向量IRQ的優(yōu)先級(jí)最低。VIC將所有向量和非向量IRQ“相或”向ARM處理器產(chǎn)生IRQ信號(hào)。IRQ服務(wù)程序可通過讀取VIC的一個(gè)寄存器立即啟動(dòng)并跳轉(zhuǎn)到相應(yīng)地址。如果有任意一個(gè)向量IRQ發(fā)出請(qǐng)求,VIC則提供最高優(yōu)先級(jí)請(qǐng)求IRQ服務(wù)程序的地址,否則提供所默認(rèn)程序的地址。該默認(rèn)程序由所有非向量IRQ共用。默認(rèn)程序可讀取任何VIC寄存器以確定哪個(gè)IRQ被激活② 設(shè)置UART0中斷把UART0設(shè)置為向量中斷,代碼如下:VICVectAddr1 = (uint32)Uart0_Handler。VICVectCntl1 = (0x20 | 0x06)。VICIntEnable = 1 6。③ LPC2292執(zhí)行UART0中斷過程在UART0接收中斷請(qǐng)求產(chǎn)生之后,微控制器切換到管理模式并跳轉(zhuǎn)到地址0x00000018執(zhí)行代碼,在啟動(dòng)代碼中,把0x00000018地址處設(shè)置的執(zhí)行代碼是LDR PC,[PC,0xff0],該指令將VICVectAddr寄存器中保存的地址裝入PC,此時(shí)VICVectAddr的值和VICVectAddr1的值相同,由于VICVectAddr1存放了UART0中斷處理程序的地址,因而LPC2292將執(zhí)行UART0中斷處理程序。④ UART0中斷處理程序每當(dāng)GPS接收器把數(shù)據(jù)輸出到LPC2292時(shí),UART0中斷處理程序把接收到數(shù)據(jù)存放到Gps_Data中,Gps_Data為自定義結(jié)構(gòu)體變量:typedef struct Data_Buf{ uint32 writepoint。 uint32 readpoint。 uint8 RecGpsData[MaxRecDat]。}RecData,*P_RecData。RecData Gps_Data。UART0中斷處理程序示例代碼:void UART0_IRQ(void){ uint8 i,j,k。 i = U0IIR。 OS_ENTER_CRITICAL()。 while(((i = U0IIR) amp。 0x01) == 0) { switch(iamp。0x0e) { case 0x02: break。 case 0x04: case 0x0c: while((U0LSRamp。0x01)!=0) { [++]=U0RBR。 if( =MaxRecDat) =0。 } break。 case 0x06: k = U0LSR。 break。 default: break。 } } VICVectAddr = 0。OS_EXIT_CRITICAL()。} 當(dāng)發(fā)生UART0中斷時(shí),讀取UART0中斷標(biāo)識(shí)寄存器U0IIR寄存器,若沒有中斷掛起時(shí),處理器直接退出中斷處理程序,若至少有一個(gè)中斷掛起時(shí),處理器繼續(xù)判斷,若中斷標(biāo)識(shí)為接收數(shù)據(jù)可用或字符超時(shí)指示時(shí),從UART0 接收器緩存寄存器U0RR讀取數(shù)據(jù)存放到gps_Data中,直到UART0線狀態(tài)寄存器U0LSR的0位為0即U0RBR為空。 鍵盤處理程序在本設(shè)計(jì)中,采用ZLG7290檢測(cè)鍵盤,ZLG7290是標(biāo)準(zhǔn)的IIC串行器件,ZLG72 90的I2C接口傳輸速率可達(dá)32kbit/s,容易與處理器接口并提供鍵盤中斷信號(hào)提高主處理器時(shí)間效率,ZLG7290的從地址slave address為70H(01110000B)。 I2C總線① LPC2292的I2C總線接口的特點(diǎn):標(biāo)準(zhǔn)的I2C總線接口,可配置為主機(jī)、從機(jī)或主/從機(jī),可編程時(shí)鐘可實(shí)現(xiàn)通用速率控制,主機(jī)從機(jī)之間雙向數(shù)據(jù)傳輸,多主機(jī)總線(無(wú)中央主機(jī)),同時(shí)發(fā)送的主機(jī)之間進(jìn)行仲裁,避免了總線數(shù)據(jù)的沖突,串行時(shí)鐘同步使器件在一條串行總線上實(shí)現(xiàn)不同位速率的通信,串行時(shí)鐘同步可作為握手機(jī)制使串行傳輸掛起和恢復(fù),I2C總線可用于測(cè)試和診斷。② I2C總線上傳輸數(shù)據(jù)的類型:I2C總線上存在兩種類型的數(shù)據(jù)傳輸ⅰ:主發(fā)送器向從接收器發(fā)送數(shù)據(jù)。主機(jī)發(fā)送的第一個(gè)字節(jié)是從機(jī)地址。接下來是數(shù)據(jù)字節(jié)流。從機(jī)每接收一個(gè)字節(jié)返回一個(gè)應(yīng)答位。ⅱ:從發(fā)送器向主接收器發(fā)送數(shù)據(jù)。第一個(gè)字節(jié)(從地址)由主機(jī)發(fā)送。從機(jī)返回一個(gè)應(yīng)答位。接下來從機(jī)向主機(jī)發(fā)送數(shù)據(jù)字節(jié)。主機(jī)每接收一個(gè)字節(jié)返回一個(gè)應(yīng)答位。接收完最后一個(gè)字節(jié),主機(jī)返回一個(gè)“非應(yīng)答位”。主器件產(chǎn)生所有串行時(shí)鐘脈沖和起始以及停止條件。出現(xiàn)停止條件或重復(fù)的起始條件時(shí)傳輸結(jié)束。由于重復(fù)的起始條件同時(shí)是下一個(gè)串行發(fā)送的開始,因此I2C總線不會(huì)被釋放。③ I2C操作模式: 有4種操作模式:主發(fā)送器模式、主接收器模式、從發(fā)送器模式和從接收器模式。主發(fā)送器模式:在該模式中,數(shù)據(jù)從主機(jī)發(fā)送到從機(jī)。在進(jìn)入主發(fā)送器模式之前。必須置位I2EN來使能I2C功能。如果AA位為0,而另一個(gè)器件成為總線的主控器時(shí),I2C將不會(huì)對(duì)任何地址產(chǎn)生應(yīng)答。也就是說它無(wú)法進(jìn)入從模式。STA,STO和SI必須設(shè)置為0。向I2CONCLR寄存器中的SIC位寫入1可清零SI。 主模式配置位76543210位名I2ENSTASTOSIAA值01000I2EN=1,使能I2C接口;AA=0,不產(chǎn)生應(yīng)答信號(hào),即不允許進(jìn)入從機(jī)模式;SI=0,I2C中斷標(biāo)志為0;STO=0,停止標(biāo)志為0;STA=0,起始標(biāo)志為1。,起始和停止條件用于指示串行傳輸?shù)钠鹗己徒Y(jié)束。第一個(gè)發(fā)送的數(shù)據(jù)包含接收器件的從地址(7位)和讀寫操作位。在此模式下,讀寫操作模式位(R/W)應(yīng)該為0,表示執(zhí)行寫操作。數(shù)據(jù)的發(fā)送每次8位,即一字節(jié),每發(fā)送完一字節(jié),主機(jī)都收到一個(gè)應(yīng)答位(從機(jī)回發(fā)的)。S從地址讀/寫A數(shù)據(jù)A… 數(shù)據(jù)A/AP ↓ ︳傳輸?shù)臄?shù)據(jù)n個(gè)數(shù)據(jù)+應(yīng)答 ︳ “0”讀 “1”寫 A=應(yīng)答(SDA為低) /A=非應(yīng)答(SDA為高) S=起始條件 P=停止條件 主發(fā)送模式中的格式該模式的數(shù)據(jù)發(fā)送操作步驟是:A:通過軟件置位STA,進(jìn)入I2C主發(fā)送器模式,I2C邏輯在總線空閑后立即發(fā)送一個(gè)起始條件。B:當(dāng)發(fā)送完起始條件后,SI位置位。此時(shí)I2STAT(狀態(tài)寄存器)中的狀態(tài)代碼為08H,該狀態(tài)代碼用于中斷服務(wù)程序的處理。C:把從地址和寫方向位裝入I2DAT(數(shù)據(jù)寄存器),然后清零SI位(向I2CONCLR寄存器中得SIC位寫入1可清零SI),開始發(fā)送從地址和寫方向位。D:當(dāng)從地址和寫方向位已發(fā)送且接收到應(yīng)答位后,SI位再次置位(可能的狀態(tài)代碼為18H,20H或38H)。E:當(dāng)狀態(tài)碼為18H時(shí),表明從機(jī)已應(yīng)答,則可以將數(shù)據(jù)裝入I2DAT,然后清零SI位,開始發(fā)送數(shù)據(jù)。F:當(dāng)正確發(fā)送數(shù)據(jù),SI位再次置位(可能的狀態(tài)碼為28H,30H)。此時(shí)可以再次發(fā)送數(shù)據(jù)或者置位STO結(jié)束總線。 主發(fā)送器模式中的格式狀態(tài)代碼(I2STAT)I2C總線硬件狀態(tài)應(yīng)用軟件的響應(yīng)I2C硬件執(zhí)行的下一個(gè)動(dòng)作讀/寫I2DAT寫I2CONSTASTOSIAA08H已發(fā)送起始條件裝入SLA+Wx00x將發(fā)送SLA+W10H已發(fā)送重復(fù)起始條件裝入SLA+W裝入SLA+Rxx0000xx同上將發(fā)送SLA+W,I2C切換到主機(jī)接收模式18H已發(fā)送SLA+W。已接收ACK裝入的數(shù)據(jù)節(jié)無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作010100110000xxxx將發(fā)送數(shù)據(jù)字節(jié),接收ACK位已發(fā)送重復(fù)起始條件將發(fā)送停止條件。STO標(biāo)志復(fù)位將發(fā)送停止條件,然后發(fā)送起始條件, STO標(biāo)志復(fù)位20H已發(fā)送SLA+W。已接收非ACK裝入的數(shù)據(jù)節(jié)無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作010100110000xxxx將發(fā)送數(shù)據(jù)字節(jié),接收ACK位已發(fā)送重復(fù)起始條件將發(fā)送停止條件。STO標(biāo)志復(fù)位將發(fā)送停止條件,然后發(fā)送起始條件, STO標(biāo)志復(fù)位28H已發(fā)送I2DAT的數(shù)據(jù)字節(jié)。已接收ACK裝入的數(shù)據(jù)節(jié)無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作010100110000xxxx將發(fā)送數(shù)據(jù)字節(jié),接收ACK位已發(fā)送重復(fù)起始條件將發(fā)送停止條件。STO標(biāo)志復(fù)位將發(fā)送停止條件,然后發(fā)送起始條件, STO標(biāo)志復(fù)位30H已發(fā)送I2DAT的數(shù)據(jù)字節(jié)。已接收ACK裝入的數(shù)據(jù)節(jié)無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作無(wú)I2DAT動(dòng)作0
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1