[mw_shl_code=c,true]小弟在串口通信实验中遇到了问题 发现串口能正常发送数据但不能接收[/mw_shl_code]
[mw_shl_code=c,true]各种测试后发现是中断服务程序中有问题 但一直找不出问题在哪 求助各位大大[/mw_shl_code]
[mw_shl_code=c,true]void USART1_IRQHandler( void )[/mw_shl_code]
[mw_shl_code=c,true]{
if ( USART_GetITStatus( USART1 , USART_FLAG_RXNE != RESET ) )
{
USART_ClearITPendingBit( USART1 , USART_FLAG_RXNE );
if ( (USART1_Rx_Sta & 0x8000) == 0 )
{
RevByte = USART_ReceiveData( USART1 );
if ( (USART1_Rx_Sta & 0x4000) !=0 )
{
if ( RevByte == 0x0a )
{
USART1_Rx_Sta |= 0x8000;
}
else
{
USART1_Rx_Sta = 0;
printf("接收错误\r\n");
}
}
else
{
if ( RevByte == 0x0d )
{
USART1_Rx_Sta |= 0x4000;
}
else
{
RevBuffer[USART1_Rx_Sta&0x3fff] = RevByte;
USART1_Rx_Sta ++;
if ( USART1_Rx_Sta >= USART1_MAX_BUFFER_LEN )
{
USART1_Rx_Sta = 0;
printf("超过最大接收长度\r\n");
}
}
}
}
}
}[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
|