我的上位机给STM32发送串口数据,比如第一次发送的是123 串口上得到的是12,再发123得到的是312,之后再发都是312.我想应该是少了一个语句没把最后一个字节的数据接收过来但不知道是哪一句。下面贴上我的程序 麻烦各位了void USART1_IRQHandler(void)
{
volatile uint8_t revdata;
/*---------------------------------------------*/
if(USART1->SR&(1<<5))
{
// revdata = USART1->SR;
revdata = USART1->DR;
//USART1->SR = 0;
SMQ_flag=1;
if(SMQ_flag==1)
{
SMQReceive(revdata);
}else
{
YtReceive(revdata);
}
revdata=0;
}
}
void SMQReceive(uint8_t data)
{
uint8_t i;
/*---------------------------------------------*/
//receive saomiaoqiang data flag=1
stReceiveDataBuf.data[stReceiveDataBuf.length++] = data;
while((USART1->SR&(1<<5))==0){}
data=0;
if(stReceiveDataBuf.length == 11)
{
frameStart** = 1;
// if(stReceiveDataBuf.data[10]==0x0d)
// {
// frameStart** = 1;
// }
// else
// {
for(i=0;i<stReceiveDataBuf.length;i++)
{
stReceiveDataBuf.data[i] = 0;
}
stReceiveDataBuf.length=0;
}
// }
}
|