UART1.c
上传用户:buddy3
上传日期:2022-06-12
资源大小:100k
文件大小:3k
- #include "..config.h"
- //定义串口操作变量
- int UART1_RX_Len = 0;
- // 串口 1 的接收标志
- char nRev_UART1;
- // 串口 1 的接收缓冲区
- char UART1_RX_BUF[UART1_RX_MAXLen] = {0};
- /*
- //int nTX1_Len;
- //char nRX1_Len;
- //char nRX1_Len_temp;
- //char nTX1_Flag;
- //char nTime_Flag;
- //int nSend_TX1;
- */
- int ReadUART1_new = 0;
- void UART1_Init(void)
- {
- // UART1 Function, Idle line multiprocessor Protocol,9600 baud, 8n1 for Uart port
- UCTL1 &=~ SWRST; //reset SWRST bit
- UCTL1 = SPB+CHAR; //0XD0;
-
- //9600
- U1BR0 = 0x74; // Prescale divisor = 0x0174
- U1BR1 = 0x01;
- U1MCTL = 0xEF; // Modulation 11101111
-
- //4800
- //U1BR0 = 0xE9; // Prescale divisor = 0x02E9
- //U1BR1 = 0x02;
- //U1MCTL = 0x6D; // Modulation 01101101
-
- UTCTL1 |= SSEL0 + SSEL1;
- URCTL1 = 0X00; //rx control reg.
- ME2 |= UTXE1 + URXE1; //Enable USART1 TXD/RXD
- P3SEL |= BIT6 + BIT7; //P3.6 and P3.7 used by USART module
- P3DIR |= BIT6; //P3.6 is output
- P3DIR &=~ BIT7;
- IE2 |= URXIE1; //Enable USART 1 interrupt
-
-
- memset(GPS_GPRMC.GPS1_Head,0,6);
- strncpy(GPS_GPRMC.GPS1_Head,"$HZQJ",5);
- GPS_GPRMC.GPS1_Head[5] = 0;
-
- memset(GPS_GPRMC.GPS2_Command,0,7);
- strncpy(GPS_GPRMC.GPS2_Command,"$GPRMC",6);
- GPS_GPRMC.GPS2_Command[6] = 0;
-
- }
- /*
- **********************************************************************
- 函数:UART1_RX_ISR
- 参数:无
- 返回:无
- 功能:处理来自串口 1 的接收中断
- **********************************************************************
- */
- interrupt [UART1RX_VECTOR] void UART1_RX_ISR(void)
- {
- //接收来自的数据
- UART1_RX_BUF[UART1_RX_Len++] = RXBUF1;
- if(UART1_RX_Len >= UART1_RX_MAXLen)
- {
- UART1_RX_Len = 0;
- memset(UART1_RX_BUF,0,UART1_RX_MAXLen);
- }
-
- ReadUART1_new = 200;
- }
- /*
- **********************************************************************
- 函数:ReadUART1
- 参数:无
- 返回:无
- 功能:接收处理串口1的数据
- **********************************************************************
- */
- void ReadUART1(void)
- {
- if((ReadUART1_new > 0) && ((--ReadUART1_new) == 0))
- {
- ReadUART1_new = 0;
-
- GPS_0183(UART1_RX_BUF); //GPS数据处理
- //UART1_SendStr_char(UART1_RX_BUF);
-
- memset(UART1_RX_BUF,0,UART1_RX_MAXLen);
- UART1_RX_Len = 0;
- }
- }
- /*
- **********************************************************************
- 函数:UART1_SendByte
- 参数:dat 要发送的数据
- 返回:无
- 功能:向串口发送字节数据,并等待发送完毕,查询方式。
- **********************************************************************
- */
- void UART1_SendByte (char dat)
- {
- U1TXBUF = dat;
- while ((UTCTL1 & 0x01) == 0); // 等待数据发送完毕
- }
- /*
- *********************************************************************************************************
- 函数:UART1_SendStr()
- 参数:str 要发送的字符串的指针
- 返回:无
- 功能:向串口发送一字符串
- *********************************************************************************************************
- */
- void UART1_SendStr_char (char *str)
- {
- while (1)
- {
- if (*str == ' ') break; // 遇到结束符,退出
- UART1_SendByte(*str++); // 发送数据
- }
- }