1.这段代码实现了串口的重映射,即将RFID串口(连接PC的串口)与sim900A的串口进行了重映射!
也就是说将PC发送的数据给RFID的串口,将 RFID的串口接收到的PC数据通过sim900A的串口发送出去。
然后sim900A的串口接收来自服务器的数据,然后返回给RFID的串口,RFID的串口的再将服务器的数据返回给PC
部分程序如下:
GPRS_ON();
Start_GPRS();}
2.
中断程序如下:
void USART1_IRQHandler(void) //串口1中断服务程序(这两个串口接收程序都可以正确接收串口的程序)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
re_ok=1;
//USART_ReceiveData(USART1) 表示清除中断位
Res =(USART_ReceiveData(USART1) & 0x7F);//(USART1->DR);//读取接收到的数据
USART_RX_BUF[USART_RX_STA]=Res ;
USART_RX_STA++;
}
/*
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
re_ok=1;
Res =USART_ReceiveData(USART1);//(USART1->DR);//读取接收到的数据
if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了
}
else //还没收到0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
*/
}
/*******************************************************************************
* Function Name : USART2_IRQHandler
* Description : This function handles USART2 global interrupt request.
: for GPRS
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART2_IRQHandler(void)
{ if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
re_gprs=1;
res=(USART_ReceiveData(USART2) & 0x7F);//读取接收到的字符
GPRS_ReBuffer[Rx]=res;
Rx++;
}
}