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

📄 uart0.c.bak

📁 ARM串口驱动 ARM芯片为LM6938,系统为ucos
💻 BAK
字号:
#include"includes.h"

UART_BUF    UART0_BUF;

void   UART0Init(void)
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	
	GPIOPinTypeUART(GPIO_PORTA_BASE,UART0_PINS);
	
	UARTConfigSet(UART0_BASE,9600,UART_CONFIG_WLEN_8|UART_CONFIG_PAR_NONE|UART_CONFIG_STOP_ONE);
	
	IntEnable(INT_UART0);
	UARTIntEnable(UART0_BASE,UART_INT_RX);
	IntMasterEnable();
}

void   UART0BufInit(void)
{
     UART0_BUF.UART0RxBufCtr=0;
	  UART0_BUF.UART0RxStartFlag=0;
	  UART0_BUF.UART0RxEndFlag=0;
	  UART0_BUF.UART0RxExchangeFlag=0;

	  UART0_BUF.UART0Received=OSSemCreate(0);

	  UART0_BUF.UART0TxBufCtr=0;
	  UART0_BUF.UART0TxEndFlag=0;
	  UART0_BUF.UART0Transformed=OSSemCreate(0);
}

void   UART0_ISR(void)
{
	unsigned long   ulStatus;
	unsigned char   temp;
	ulStatus=UARTIntStatus(UART0_BASE,true);
	
	UARTIntClear(UART0_BASE,UART_INT_RX);

	if(ulStatus&UART_INT_RX)
	 {
	  	temp=UARTCharNonBlockingGet(UART0_BASE);
	 }
	 else
	  {
	    return;
	  }
    
	
  
   if(UART0_BUF.UART0RxStartFlag==0)
  	{
  		if(temp==UART0_START_CHAR)
  			{
  				UART0_BUF.UART0RxStartFlag=1;
  			}
  			return;
  		}
  	if(UART0_BUF.UART0RxEndFlag==0)	
  		{
  			if(temp==UART0_END_CHAR)
  				{
  					UART0_BUF.UART0RxEndFlag=1;
  				}
  				return;
  			}	
  	if(temp==UART0_EXCHANGE_CHAR)
  		{
  			UART0_BUF.UART0RxExchangeFlag=1;
  			return;
  		}		
  	if(UART0_BUF.UART0RxBufCtr>UART0_RX_BUF_SIZE)
  		{
  			UART0_BUF.UART0RxBufCtr=0;
  			return;
  		}	
  	if(UART0_BUF.UART0RxStartFlag)
  		{
  			if(UART0_BUF.UART0RxEndFlag==0)
  				{
  					if(UART0_BUF.UART0RxExchangeFlag)
  						{
  							UART0_BUF.UART0RxBuf[UART0_BUF.UART0RxBufCtr++]=UART0_EXCHANGE_CHAR+temp;
  						}
  					else
  						{
  							UART0_BUF.UART0RxBuf[UART0_BUF.UART0RxBufCtr++]=temp;
  						}	
  				}
  		}			
}

void    UART0Send(void)
{
	   while(UART0_BUF.UART0TxBufCtr)
	   {
	   	   if(UARTSpaceAvail(UART0_BASE))
	   	   	{
	   	   		  UARTCharNonBlockingPut(UART0_BASE,UART0_BUF.UART0TxBuf[UART0_BUF.UART0TxBufCtr-1]);
	   	   		  UART0_BUF.UART0TxBufCtr--;
	   	   	}
	   }
	   	while(!UARTTraFifoEmp(UART0_BASE));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -