?? gps_cpu_port.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: GPS_CPU_PORT.c
** Last modified Date: 2005-06-17
** Last Version: 1.0
** Descriptions: cpu port function of GPS
**
**------------------------------------------------------------------------------------------------------
** Created by: Yehaoben
** Created date: 2005-06-17
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.H"
/*********************************************************************************************************
** Function name: UART_Ini
**
** Descriptions: Initial uart
**
** input parameters: baud bandrate
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 UART_Ini(uint32 baud)
{ uint32 bak;
U0IER = U0IER & (~0x02); /* 隊列空,則禁止發送中斷 */
/* 參數過濾 */
if( (0==baud)||(baud>115200) ) return(0);
/* 設置串口波特率 */
U0LCR = 0x80; // DLAB位置1
bak = (Fpclk>>4)/baud;
U0DLM = bak>>8;
U0DLL = bak&0xff;
/* 設置串口模式 */
bak = 3; // 設置字長度
bak |= 0<<4; // 設置奇偶校驗
U0LCR = bak;
// U0FCR = 0x00;
U0FCR = 0x81; // 使能FIFO,并設置觸發點為8字節
U0IER = 0x01; // 允許RBR中斷,即接收中斷
return(1);
}
/*********************************************************************************************************
** Function name: IRQ_UART
**
** Descriptions: UART interrupt server function
**
** input parameters: None
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern void ZLG_GPS_RVC_HANDLE(uint8 i);
void IRQ_UART(void)
{
uint8 IIR, temp, i;
OS_ENTER_CRITICAL();
while(((IIR = U0IIR) & 0x01) == 0)
{ /* 有中斷未處理完 */
switch (IIR & 0x0e)
{
case 0x02: /* THRE中斷 */
break;
case 0x04: // 讀取FIFO的數據,并清除中斷標志
case 0x0c: /* 字符超時指示 */
while((U0LSR&0x01)!=0)
{
i = U0RBR;
ZLG_GPS_RVC_HANDLE(i);
}
break;
case 0x06: /* 接收線狀態 */
temp = U0LSR;
break;
default :
break;
}
}
VICVectAddr = 0; // 通知中斷控制器中斷結束
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** Function name: ZLG_GPS_Send_String
**
** Descriptions: Send string
**
** input parameters: char *:string pointer
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ZLG_GPS_Send_String(char * strptr)
{
uint8 i,j,k,l;
k = strlen(strptr);
l = 0;
do
{
j = (k > 16) ? 16 : k;
for(i=0; i<j; i++)
U0THR = strptr[i + (l * 16)];
l++;
k = k - j;
while( (U0LSR&0X00000040) == 0);
}while(k > 0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -