/* ********************************************************************************************************* * 函 数 名: comGetChar * 功能说明: 从串口缓冲区读取1字节,非阻塞。无论有无数据均立即返回 * 形 参: _ucPort: 端口号(COM1 - COM6) * _pByte: 接收到的数据存放在这个地址 * 返 回 值: 0 表示无数据, 1 表示读取到有效字节 ********************************************************************************************************* */ uint8_t ComGet(COM_PORT_E _ucPort, uint8_t *_pByte) { UART_T *pUart; uint8_t Exist; pUart=ComToUart(_ucPort); Exist=UartGetChar(pUart,_pByte); return Exist; }
/* ********************************************************************************************************* * 函 数 名: comGetChar * 功能说明: 从串口缓冲区读取1字节,非阻塞。无论有无数据均立即返回 * 形 参: _ucPort: 端口号(COM1 - COM6) * _pByte: 接收到的数据存放在这个地址 * 返 回 值: 0 表示无数据, 1 表示读取到有效字节 ********************************************************************************************************* */ uint8_t comGetChar(COM_PORT_E _ucPort, uint8_t *_pByte) { UART_T *pUart; pUart = ComToUart(_ucPort); if (pUart == 0) { return 0; } return UartGetChar(pUart, _pByte); }
/********************************************************************************************************* ** Function name: UART1_ISR ** Descriptions: 串口1中断服务函数 ** input parameters: 无 ** Output parameters:: 无 ** Returned value: 无 ** Created by: ** Created Date: 2014.10.03 **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: 2014.10.03 **-------------------------------------------------------------------------------------------------------- *********************************************************************************************************/ void UART1_ISR(void) { u8 ch = 0; unsigned long ulStatus; ulStatus = UARTIntStatus(UART1_BASE, true); /* 读取已使能的串口0中断状态 */ UARTIntClear(UART1_BASE, ulStatus); /* 清除当前的串口0中断 */ if((ulStatus & UART_INT_RT)||(ulStatus & UART_INT_RX)) { /* 接收中断 */ while(UARTCharsAvail(UART1_BASE)) { ch = UartGetChar(); UartProcessMsg(ch); } } }
/* * Main application entry point. */ int main( void ) { Radio = RadioDriverInit( ); Radio->Init( ); Radio->StartRx( ); while( 1 ) { if( EnableMaster == true ) { OnMaster( ); } else { OnSlave( ); } #if( PLATFORM == SX12xxEiger ) && ( USE_UART == 1 ) UartProcess( ); { uint8_t data = 0; if( UartGetChar( &data ) == UART_OK ) { UartPutChar( data ); } } #endif } #ifdef __GNUC__ return 0; #endif }
void GpsMcuIrqNotify( UartNotifyId_t id ) { uint8_t data; if( id == UART_NOTIFY_RX ) { if( UartGetChar( &Uart1, &data ) == 0 ) { if( ( data == '$' ) || ( NmeaStringSize >= 128 ) ) { NmeaStringSize = 0; } NmeaString[NmeaStringSize++] = ( int8_t )data; if( data == '\n' ) { NmeaString[NmeaStringSize] = '\0'; GpsParseGpsData( ( int8_t* )NmeaString, NmeaStringSize ); UartDeInit( &Uart1 ); BlockLowPowerDuringTask ( false ); } } } }