我用STM32F103C8T6写串口接收中断,将接收的数据,再通过串口发送出来。但是出了一个很奇怪的问题,不知道具体什么原因,请问有没有大神能给个答复呢?怎么都想不到为什么会这样。我用串口调试助手发送55 04 58 22,点一次发送,串口助手收到单片机回应只有一个55,再点一次发送,收到回应04 58 22,再点一次又是55 就是这样,每次都是分两次才接受得完,不知道这个是什么原因呢。
[mw_shl_code=c,true] while(1)
{
if(ReceiveState==1)
{
ReceiveState=0;
for(i=0;i<4;i++)
{
USART_SendData(USART1,Rec);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
Rx_Counter=0;
}
}
void USART1_IRQHandler(void)
{
u8 Clear=Clear;
if (USART_GetITStatus(USART1,USART_IT_RXNE))
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
Rec[Rx_Counter++]=USART_ReceiveData(USART1);
if(Rx_Counter==4)
{
ReceiveState=1;
}
}
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
Rec[Rx_Counter++]
这句话会先执行Rec[Rx_Counter] 后执行Rx_Counter++,所以存放的地方还是0,1,2,3
一周热门 更多>