![嵌入式實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)(共48頁(yè))_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/be644038-3164-4cef-abf1-f8b4d69485f3/be644038-3164-4cef-abf1-f8b4d69485f31.gif)
![嵌入式實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)(共48頁(yè))_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/be644038-3164-4cef-abf1-f8b4d69485f3/be644038-3164-4cef-abf1-f8b4d69485f32.gif)
![嵌入式實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)(共48頁(yè))_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/be644038-3164-4cef-abf1-f8b4d69485f3/be644038-3164-4cef-abf1-f8b4d69485f33.gif)
![嵌入式實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)(共48頁(yè))_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/be644038-3164-4cef-abf1-f8b4d69485f3/be644038-3164-4cef-abf1-f8b4d69485f34.gif)
![嵌入式實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)(共48頁(yè))_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/be644038-3164-4cef-abf1-f8b4d69485f3/be644038-3164-4cef-abf1-f8b4d69485f35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 報(bào) 告課程名稱 嵌入式系統(tǒng)設(shè)計(jì) 實(shí)驗(yàn)儀器 清華同方辰源嵌入式系統(tǒng)實(shí)驗(yàn)箱 實(shí)驗(yàn)名稱 實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn) 系 別 計(jì)算機(jī)學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí)/學(xué)號(hào) 學(xué)生姓名 實(shí)驗(yàn)日期 成 績(jī) 指導(dǎo)教師 實(shí)驗(yàn)四:串口傳輸實(shí)驗(yàn)1、 實(shí)驗(yàn)問題回答(1) 本實(shí)驗(yàn)引入了Send和Receive兩個(gè)變量表示上傳或下傳數(shù)據(jù),用狀態(tài)機(jī)怎么實(shí)現(xiàn)?答:switch(oledkey0)case 'F': state=1;/Receive = 1;/Send = 0;break;case 'E': state=2;/Send = 1;/Receive =
2、 0;break;switch(state)case 0:break;case 1: recive();break;case 2:send();break;(2) 了解串口通訊原理。答:串口按位(bit)發(fā)送和接收字節(jié),串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。1、51系列單片機(jī)的串口有4個(gè)模式,可分別用作串并轉(zhuǎn)換、并串轉(zhuǎn)換、異步串行通信(2種模式)。異步串行通信中,有1+8+1和1+8+1+1兩種幀格式,多機(jī)通信是特殊的通信方式。2、基本原理是兩組移位寄存器。將并行通信轉(zhuǎn)換成串行通信模式(發(fā)送部分),或反之(接收部分)??扇p工運(yùn)行。3
3、、速度通過移位脈沖決定。具體一般通過定時(shí)器1的自動(dòng)裝載模式產(chǎn)生的溢出脈沖給出。4、電平上采用的是CMOS邏輯。5、以上是物理層和數(shù)據(jù)鏈路層的單片機(jī)串口模塊的約定,其他層需要軟件人員根據(jù)需要自行把握。另外,電平需要根據(jù)實(shí)際通信環(huán)境做變換,如232、485或紅外等。(3)了解在上位機(jī)(PC端)端,C程序中如何調(diào)用串口? 答:#include <Windows.h>#include <stdio.h>HANDLE hCom;int main(void)hCom=CreateFile(TEXT("COM3"),/COM
4、1口GENERIC_READ|GENERIC_WRITE, /允許讀和寫0, /獨(dú)占方式NULL,OPEN_EXISTING, /打開而不是創(chuàng)建0, /同步方式NULL);if(hCom=(HANDLE)-1)printf("打開COM失敗!n");return FALSE;elseprintf("COM打開成功!n");SetupComm(hCom,1024,1024); /輸入緩沖區(qū)和輸出緩沖區(qū)的大小都是1024COMMTIMEOUTS TimeOuts;/設(shè)定讀超時(shí)TimeOut
5、s.ReadIntervalTimeout=1000;TimeOuts.ReadTotalTimeoutMultiplier=500;TimeOuts.ReadTotalTimeoutConstant=5000;/設(shè)定寫超時(shí)TimeOuts.WriteTotalTimeoutMultiplier=500;TimeOuts.WriteTotalTimeoutConstant=2000;SetCommTimeouts(hCom,&TimeOuts); /設(shè)置超時(shí)DCB dcb;GetCommState(hCom,&dcb);dcb.BaudRate=9600;&
6、#160;/波特率為9600dcb.ByteSize=8; /每個(gè)字節(jié)有8位dcb.Parity=NOPARITY; /無(wú)奇偶校驗(yàn)位dcb.StopBits=ONE5STOPBITS; /兩個(gè)停止位SetCommState(hCom,&dcb);DWORD wCount;/讀取的字節(jié)數(shù)BOOL bReadStat;while(1)PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR); /清空緩沖區(qū)char str9=0;printf("%sn",str);bRea
7、dStat=ReadFile(hCom,str,9,&wCount,NULL);if(!bReadStat)printf("讀串口失敗!");return FALSE;elsestr8='0'printf("%sn",str);Sleep(100);(4) 了解在上位機(jī)(PC端)端,JAVA程序中如何調(diào)用串口?答:public static void process() try Enumeration portList = CommPortIdentifier.getPortIdentifiers(); while (p
8、ortList.hasMoreElements() CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() = CommPortIdentifier.PORT_SERIAL)/如果端口類型是串口則判斷名稱 if(portId.getName().equals("COM1")/如果是COM1端口則退出循環(huán) break; else portId=null; SerialPort serialPort = (SerialPort)portId
9、.open("Serial_Communication", 1000);/打開串口的超時(shí)時(shí)間為1000ms serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);/設(shè)置串口速率為9600,數(shù)據(jù)位8位,停止位1們,奇偶校驗(yàn)無(wú) InputStream in = serialPort.getInputStream();/得到輸入流 OutputStream out = serialPort.getOutputStream();/
10、得到輸出流 /進(jìn)行輸入輸出操作/操作結(jié)束后 in.close(); out.close(); serialPort.close();/關(guān)閉串口 catch (PortInUseException e) e.printStackTrace(); catch (UnsupportedCommOperationException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); 2、 實(shí)驗(yàn)?zāi)康暮托Ч麑?shí)驗(yàn)?zāi)康模海?)學(xué)習(xí)、理解、掌握利用串口實(shí)現(xiàn)上位機(jī)和下位機(jī)之間的通訊(數(shù)據(jù)上傳和控制)。達(dá)到實(shí)驗(yàn)要求,拓展二未實(shí)現(xiàn)。實(shí)驗(yàn)
11、效果:3、 實(shí)驗(yàn)內(nèi)容和步驟實(shí)驗(yàn)內(nèi)容:(1) 默認(rèn)在在OLED屏幕上分行顯示串口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位、“E”鍵發(fā)送模式、“F”鍵接收模式。思路:E鍵發(fā)送模式設(shè)置send=1 receive=0 F鍵接受模式設(shè)置 send=0 receive=1(2) 按下小鍵盤的“E”鍵,表示下位機(jī)(實(shí)驗(yàn)箱)往上位機(jī)(PC)發(fā)送數(shù)據(jù),上位機(jī)開啟“超級(jí)終端”,下位機(jī)循環(huán)往上位機(jī)發(fā)送“0”“1”“2”?!?”字符,上位機(jī)在“超級(jí)終端”中可以看到。思路:定義一個(gè)全局變量字符數(shù)組,char rxchar2;GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_
12、0);SysCtlDelay();UARTSend(unsigned char *)&rxchar, 1);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);rxchar0值不斷由0x30-0x39之間進(jìn)行變化。if(rxchar0 >= 0x39) | (rxchar0 < 0x30)rxchar0 = 0x30;elserxchar0+;(3) 按下小鍵盤的“F”鍵,表示上位機(jī)(PC)往下位機(jī)(實(shí)驗(yàn)箱)發(fā)送數(shù)據(jù),上位機(jī)開啟“超級(jí)終端”,輸入“A”、“B”、“C”、“D”等,下位機(jī)接受數(shù)據(jù),和小鍵盤輸入一樣
13、進(jìn)行相應(yīng)顯示。思路:if(UARTCharsAvail(UART0_BASE)rxchar0 = UARTCharGet(UART0_BASE); / 等待接收字符rxchar1 = '0'GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);RIT128x96x4StringDraw("Receive: ", 12,80, 15); RIT128x96x4StringDraw(rxchar, 66,80,15);RIT128x96x4StringDraw(" ", 72,80,15);
14、 SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);(4) 擴(kuò)展:按照狀態(tài)機(jī)模式修改程序。思路:根據(jù)按鍵的不同判斷狀態(tài),三種狀態(tài),空閑,接收,發(fā)送。根據(jù)狀態(tài)的不同調(diào)用相應(yīng)的方法。(5) 擴(kuò)展:在另外一片CPU LM3S 2110上實(shí)現(xiàn)串口通信,接實(shí)驗(yàn)箱第二個(gè)串口接口,因?yàn)檫@一片CPU不帶顯示器,可以只實(shí)現(xiàn)下位機(jī)(實(shí)驗(yàn)箱)往上位機(jī)(PC)發(fā)送數(shù)據(jù),上位機(jī)開啟“超級(jí)終端”,下位機(jī)循環(huán)往上位機(jī)發(fā)送“0”“1”“2”?!?”字符,上位機(jī)在“超級(jí)終端”中可以看到。思路:理論上在創(chuàng)建項(xiàng)目時(shí)選擇cpu LM3S 2110,改變實(shí)驗(yàn)箱上連線,連
15、接UART2的串口即可實(shí)現(xiàn)。但實(shí)際操作中并未實(shí)現(xiàn)。實(shí)驗(yàn)步驟:(1) 加載必要程序(2) 串口啟動(dòng)配置(main)(3) 增加串口相關(guān)函數(shù)(main.c中)(4) 修改主函數(shù),實(shí)現(xiàn)本次實(shí)驗(yàn)要求的功能(5) 編譯、連接,生成可執(zhí)行程序文件(6) 反復(fù)(3)-(5)步驟,直到完成(7) 硬件連接,連接標(biāo)志UART1的串口(8) 聯(lián)調(diào)4、 實(shí)驗(yàn)總結(jié)與收獲實(shí)驗(yàn)代碼#include <stdio.h>#include <LM3Sxxxx.H>#include <hw_ints.h>#include <hw_memmap.h>#include <hw_t
16、ypes.h>#include <gpio.h>#include <interrupt.h>#include <sysctl.h>#include <uart.h>#include "rit128x96x4.h" /#include "utility.h" #define MAX_SIZE 40 / 緩沖區(qū)最大限制長(zhǎng)度#define UARTCharGetNB UARTCharGetNonBlockingchar RxBuf1 + MAX_SIZE; / 接收緩沖區(qū)int BufP = 0; / 緩沖
17、區(qū)位置變量tBoolean RxEndFlag = false; / 接收結(jié)束標(biāo)志unsigned int Event=0,Event_key=0,Send=0,Receive=0;int type=0;int ki=0;char oledkey2;int state=0;unsigned char ucValue=0x00;long time=0;int Speed,count=0;unsigned char rxchar10;void timerset(void);void UARTSend(const unsigned char *pucBuffer, unsigned long ulC
18、ount);void recive()if(UARTCharsAvail(UART0_BASE)rxchar0 = UARTCharGet(UART0_BASE); / 等待接收字符rxchar1 = '0'GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);RIT128x96x4StringDraw("Receive: ", 30,80, 15);RIT128x96x4StringDraw(rxchar, 66,80,15);RIT128x96x4StringDraw(" ", 72
19、,80,15);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);void send() RIT128x96x4StringDraw("sending1",0,60,15);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);SysCtlDelay();/RIT128x96x4StringDraw("sending2",20,1,15);UARTSend(unsigned char *)&rxchar, 1);SysCtlDel
20、ay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);if(rxchar0 >= 0x39) | (rxchar0 < 0x30)rxchar0 = 0x30;elserxchar0+;RIT128x96x4StringDraw("sended ",1,1,15);int main()/聲明部分rxchar0=0x30;rxchar1='0'/初始化/* Set the clocking to run from PLL at 50 MHz */SysCtlClockSet(SYSCTL_SYSDIV_1
21、 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);RIT128x96x4Init();RIT128x96x4Clear();/設(shè)置時(shí)鐘中斷1SysTickPeriodSet(SysCtlClockGet()/100); SysTickEnable();SysTickIntEnable();/*/設(shè)置鍵盤中斷/*使能外設(shè)GPIO */SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);SysCtlPeripher
22、alEnable(SYSCTL_PERIPH_GPIOD);SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);/*設(shè)置GPIO 為輸入 */GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);/*配置GPIO 端口為輸出/ 7segd1(
23、PB6);7segd2(PB4);7segd3(PB5)GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);/ bitcode0(PC5);bitcode1(PC6);bitcode2(PC7)GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);/ 7segd0(PD4);7segdot(PD5);rst(PD6)GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, G
24、PIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);*/*使能中斷 */IntEnable(INT_GPIOD);IntMasterEnable();GPIOPinIntEnable(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOIntTypeSet(GPIO_PORTD_BASE, GPIO_PIN_7, GPIO_RISING_EDGE);/*GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PI
25、N_1);/ Configure the UART for 115,200, 8N1 operation.UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), ,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE);UARTFIFOLevelSet(UART0_BASE, / 設(shè)置發(fā)送和接收FIFO 深度UART_FIFO_TX4_8,UART_FIFO_RX6_8);IntEnable(INT_UART0);UARTIntEnable(UART0_BASE, UART_
26、INT_RX | UART_INT_RT);timerset();/計(jì)時(shí)器初始化timerset();/計(jì)時(shí)器初始化 RIT128x96x4StringDraw("com1", 0, 0, 15);/顯示串口號(hào)RIT128x96x4StringDraw("", 0, 20, 15);/顯示波特率/*unsigned char a= *pulConfig;char d30;char b30;d=*a+1;b=*a+2;*/RIT128x96x4StringDraw("8", 0, 40, 15);/顯示數(shù)據(jù)位/unsigned long
27、 parity=UARTParityModeGet(UART0_BASE);/sprintf(p,"%d",parity );RIT128x96x4StringDraw("wu", 0, 60, 15);/顯示校驗(yàn)位RIT128x96x4StringDraw("1", 0, 80, 15);/顯示停止位RIT128x96x4StringDraw("E:send",1,31,15);RIT128x96x4StringDraw("F:receiave",1,41,15);while(1) if(Ev
28、ent)Event = 0; if(Event_key)Event_key = 0;switch(oledkey0)/*case '0':Draw_Char_H(0);break;case '1':Reset_Counter_Speed(128);Speed = 128;break;*/case 'F': state=1;/Receive = 1;/Send = 0;break;case 'E': state=2;/Send = 1;/Receive = 0;break;default:state=0;break; switch(
29、state)case 0:break;case 1: recive();break;case 2:send();break;default:/state=0;break; /*if(Send)RIT128x96x4StringDraw("sending1",0,60,15);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);SysCtlDelay();/RIT128x96x4StringDraw("sending2",20,1,15);UARTSend(unsigned char *)&rx
30、char, 1);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);if(rxchar0 >= 0x39) | (rxchar0 < 0x30)rxchar0 = 0x30;elserxchar0+;RIT128x96x4StringDraw("sended ",1,1,15);if(Receive) if(UARTCharsAvail(UART0_BASE)rxchar0 = UARTCharGet(UART0_BASE); / 等待接收字符rxchar1 = '0'GPIOPi
31、nWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);RIT128x96x4StringDraw("Receive: ", 30,80, 15);RIT128x96x4StringDraw(rxchar, 66,80,15);RIT128x96x4StringDraw(" ", 72,80,15);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);*/return 0;/中斷處理void SysTick_Handler (void) Event =
32、1;/*中斷服務(wù)函數(shù)ISR*/void GPIO_PORT_D_ISR(void)unsigned char ucKey;unsigned long ulStatus;ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true);GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);if(ulStatus & GPIO_PIN_7)ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4);ucKey = ucKey>>1;ucValue = ucValue + u
33、cKey;ucValue = ucValue<<1;ki+;if(ki=4)ki=0;oledkey1='0'if(ucValue>>4)<10)oledkey0 = (ucValue>>4) + 48;elseoledkey0 = (ucValue>>4) - 10 + 'A' Event_key = 1;void timerset()SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);TimerConfigure(TIMER0_BASE, TIMER_CFG_32_B
34、IT_PER);TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet()/100); / 不除以100 則1 秒中斷一次IntEnable(INT_TIMER0A);TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);void Timer0IntHandler(void)unsigned long ulStatus;ulStatus = TimerIntStatus(TIMER0_BASE, true); / 獲取當(dāng)前中斷狀態(tài)TimerIntClear(TIMER0_BASE, TIMER_TIMA_TI
35、MEOUT); / 清除全部中斷狀態(tài)if (ulStatus & TIMER_TIMA_TIMEOUT) / 如果是超時(shí)中斷/補(bǔ)充該部分代碼time+;/每次計(jì)時(shí)中斷,相應(yīng)計(jì)數(shù)值進(jìn)行變化void UARTIntHandler(void)unsigned long uStatus;/ Get the interrrupt status.uStatus = UARTIntStatus(UART0_BASE, true);/ Clear the asserted interrupts.UARTIntClear(UART0_BASE, uStatus);/ Loop while there a
36、re characters in the receive FIFO.while(UARTCharsAvail(UART0_BASE)/ Read the next character from the UART and write it back to the UART.UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE); void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)/ Loop while there are mo
37、re characters to send./while(ulCount-)/ Write the next character to the UART./UARTCharPutNonBlocking(UART0_BASE, *pucBuffer+);拓展#include <stdio.h>#include <LM3Sxxxx.H>#include <hw_ints.h>#include <hw_memmap.h>#include <hw_types.h>#include <gpio.h>#include <inte
38、rrupt.h>#include <sysctl.h>#include <uart.h>#include "rit128x96x4.h" /#include "utility.h" #define MAX_SIZE 40 / 緩沖區(qū)最大限制長(zhǎng)度#define UARTCharGetNB UARTCharGetNonBlockingchar RxBuf1 + MAX_SIZE; / 接收緩沖區(qū)int BufP = 0; / 緩沖區(qū)位置變量tBoolean RxEndFlag = false; / 接收結(jié)束標(biāo)志unsigned
39、int Event=0,Event_key=0,Send=0,Receive=0;int type=0;int ki=0;char oledkey2;int state=0;unsigned char ucValue=0x00;long time=0;int Speed,count=0;unsigned char rxchar10;void timerset(void);void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount);void recive()if(UARTCharsAvail(UART0_BASE)rx
40、char0 = UARTCharGet(UART0_BASE); / 等待接收字符rxchar1 = '0'GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);RIT128x96x4StringDraw("Receive: ", 30,80, 15);RIT128x96x4StringDraw(rxchar, 66,80,15);RIT128x96x4StringDraw(" ", 72,80,15);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE
41、, GPIO_PIN_0,0);void send() RIT128x96x4StringDraw("sending1",0,60,15);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);SysCtlDelay();/RIT128x96x4StringDraw("sending2",20,1,15);UARTSend(unsigned char *)&rxchar, 1);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);i
42、f(rxchar0 >= 0x39) | (rxchar0 < 0x30)rxchar0 = 0x30;elserxchar0+;RIT128x96x4StringDraw("sended ",1,1,15);int main()/聲明部分rxchar0=0x30;rxchar1='0'/初始化/* Set the clocking to run from PLL at 50 MHz */SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_
43、8MHZ);RIT128x96x4Init();RIT128x96x4Clear();/設(shè)置時(shí)鐘中斷1SysTickPeriodSet(SysCtlClockGet()/100); SysTickEnable();SysTickIntEnable();/*/設(shè)置鍵盤中斷/*使能外設(shè)GPIO */SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);SysCtlPeripheralEnab
44、le(SYSCTL_PERIPH_UART0);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);/*設(shè)置GPIO 為輸入 */GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);/*配置GPIO 端口為輸出/ 7segd1(PB6);7segd2(PB4);7segd3(PB5)GPIOPinTypeGPIOOutput(
45、GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);/ bitcode0(PC5);bitcode1(PC6);bitcode2(PC7)GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);/ 7segd0(PD4);7segdot(PD5);rst(PD6)GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);*/*使能中斷 */Int
46、Enable(INT_GPIOD);IntMasterEnable();GPIOPinIntEnable(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOIntTypeSet(GPIO_PORTD_BASE, GPIO_PIN_7, GPIO_RISING_EDGE);/*GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);/ Configure the UART for 115,200, 8N1 operati
47、on.UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), ,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE);UARTFIFOLevelSet(UART0_BASE, / 設(shè)置發(fā)送和接收FIFO 深度UART_FIFO_TX4_8,UART_FIFO_RX6_8);IntEnable(INT_UART0);UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);timerset();/計(jì)時(shí)器初始化timerset()
48、;/計(jì)時(shí)器初始化 RIT128x96x4StringDraw("com1", 0, 0, 15);/顯示串口號(hào)RIT128x96x4StringDraw("", 0, 20, 15);/顯示波特率/*unsigned char a= *pulConfig;char d30;char b30;d=*a+1;b=*a+2;*/RIT128x96x4StringDraw("8", 0, 40, 15);/顯示數(shù)據(jù)位/unsigned long parity=UARTParityModeGet(UART0_BASE);/sprintf(p,&
49、quot;%d",parity );RIT128x96x4StringDraw("wu", 0, 60, 15);/顯示校驗(yàn)位RIT128x96x4StringDraw("1", 0, 80, 15);/顯示停止位RIT128x96x4StringDraw("E:send",1,31,15);RIT128x96x4StringDraw("F:receiave",1,41,15);while(1) if(Event)Event = 0; if(Event_key)Event_key = 0;switch(o
50、ledkey0)/*case '0':Draw_Char_H(0);break;case '1':Reset_Counter_Speed(128);Speed = 128;break;*/case 'F': state=1;/Receive = 1;/Send = 0;break;case 'E': state=2;/Send = 1;/Receive = 0;break;default:state=0;break; switch(state)case 0:break;case 1: recive();break;fffhhcas
51、e 2:send();break;default:/state=0;break; /*if(Send)RIT128x96x4StringDraw("sending1",0,60,15);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0);SysCtlDelay();/RIT128x96x4StringDraw("sending2",20,1,15);UARTSend(unsigned char *)&rxchar, 1);SysCtlDelay();GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,0);if(rxchar0 >= 0x39) | (rxchar0 < 0x30)rxchar0 = 0x30;elserxchar0+;RIT128x96x4StringDraw("sended ",1,1,15);if(Receive) if(UARTCharsAvail(UART0_BASE)rxchar0 = UARTCharGet(UART0_BASE); / 等待接收字符rxchar1 = '0'GPIOPinWrite(GPIO_PORTF_B
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年信用卡消費(fèi)借款合同樣本
- 2025年廣告授權(quán)協(xié)議
- 2025年鉚接設(shè)備項(xiàng)目提案報(bào)告模板
- 2025年事業(yè)單位合同違約責(zé)任免除條件
- 2025年標(biāo)準(zhǔn)酒店股份投資合作合同文本
- 2025年公共安全視頻監(jiān)控系統(tǒng)分包安裝合同書
- 2025年英語(yǔ)合同模板大全
- 2025年城市擴(kuò)建征收土地合同范文
- 2025年臨時(shí)電源項(xiàng)目協(xié)議
- 2025年建筑施工安全保險(xiǎn)合同格式
- 足球場(chǎng)建設(shè)項(xiàng)目設(shè)計(jì)方案
- 小學(xué)語(yǔ)文教師讀書筆記范文(5篇)
- 兒童四宮格數(shù)獨(dú)96題-(由簡(jiǎn)到難,支持打印)
- 景觀模型設(shè)計(jì)與制作:第7章 建筑模型制作基本技法
- 關(guān)愛婦女防治兩癌講座課件
- 2024-2030年傷口護(hù)理管理行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究分析報(bào)告
- (正式版)FZ∕T 80018-2024 服裝 防靜電性能要求及試驗(yàn)方法
- 北師大版八年級(jí)下冊(cè)生物教案全冊(cè)
- 混凝土攪拌站安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控體系方案全套資料2021-2022完整實(shí)施方案模板
- 新生兒紅臀的預(yù)防和護(hù)理
- 初中英語(yǔ)比較級(jí)和最高級(jí)專項(xiàng)練習(xí)題含答案
評(píng)論
0/150
提交評(píng)論