⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps_cpu_port.c

📁 介绍了在vxworks环境下对gps模块儿的编程
💻 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 + -