我目前想实现的功能是:1、利用串口接收中断不断从串口接收数据,2、再在主函数中对接收的数据进行处理:每满8个字节且数据有效时,判断每八个字节的第二个字节,当第二个字节为01时代表这八个字节为起始命令,从这八个字节后开始保存接下来的有效数据,3、当第二个字节为02时代表这八个字节为结束命令,则结束此段数据的接收,将已经接收的数据保存下来,重新接收数据,4、将起始命令和结束命令中间的这些命令(一个命令8个字节)通过串口中断发送出去。现在遇到的问题是,利用串口助手向下位机发送一次数据后,只返回了一些乱码,然后再发送数据时,就没有反应了。现在想解决的问题是串口中断里的操作,大家帮忙看看有什么问题没 。急!!void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
*RXDPointer=USART_ReceiveData(USART1);
RXDPointer++;
if(DataSend!=0)
{
USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
USART_ITConfig(USART1,USART_IT_TXE,ENABLE);
}
}
if(DataSend!=0)
{
DataSend--;
USART_SendData(USART1,*TXDPointer++);
while(USART_GetITStatus(USART1,USART_IT_TXE)==RESET);
}
else
{
TXDPointer=SendBuffer;
USART_ITConfig(USART1,USART_IT_TXE,DISABLE);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
}
}
|