?? uart0.c
字號(hào):
#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.UART0RxBufFree=OSSemCreate(1);
UART0_BUF.UART0Received=OSSemCreate(0);
UART0_BUF.UART0TxBufCtr=0;
UART0_BUF.UART0TxEndFlag=0;
UART0_BUF.UART0Transformed=OSSemCreate(0);
UART0_BUF.UART0TxBufFree=OSSemCreate(1);
}
void UART0_ISR(void)
{
unsigned long ulStatus;
unsigned char temp;
ledToggle(2);
ulStatus=UARTIntStatus(UART0_BASE,true);
UARTIntClear(UART0_BASE,UART_INT_RX);
if(ulStatus&UART_INT_RX)
{
temp=UARTCharNonBlockingGet(UART0_BASE);
}
else
{
return;
}
if(temp==UART0_START_CHAR)
{
UART0_BUF.UART0RxStartFlag=1;
UART0_BUF.UART0RxBufCtr=0;
return;
}
if(UART0_BUF.UART0RxEndFlag==0)
{
if(temp==UART0_END_CHAR)
OSSemPost(UART0_BUF.UART0Received);
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));
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -