本帖最后由 背包客 于 2017-7-23 09:36 编辑
上位机一次发送多个帧给下位,请问应该怎么写?
下面程序只能接受一个帧,当接收两个帧时,程序就会卡死,请问大神应该怎么改写?
void USART3_IRQHandler(void)
{
u8 inbyte;
inbyte = USART_ReceiveData(USART3);
if ( sio_rx_buf.len >= (SIO_BYTE_BUF_MAX - 1) )
{
sio_rx_buf.len = 0;
sio_byte_buf_flush(&sio_rx_buf);
}
if ( (sio_rx_buf.len == 0 ) && (inbyte != RCP_PKT_PRAMBL) )
{
return;
}
sio_byte_buf_enqueue(&sio_rx_buf, inbyte);
if(sio_rx_buf.len >= (sio_rx_buf.data[4] + RCP_HEADEND_CRC_LEN))
{
if( sio_rx_buf.data[sio_rx_buf.data[4] + RCP_PRAMBL_LEN + RCP_HEADER_LEN] == RCP_PKT_ENDMRK)
{
sio_post_received_data(&sio_rx_buf.data[0],sio_rx_buf.len);
}
}
}
void sio_post_received_data(u8* data, u8 len)
{
while(len--)
{
while((USART1->SR&0x40)==0);
USART_SendData(USART1,*data++); //将接收到的数据发送出去
}
sio_byte_buf_flush(&sio_rx_buf);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
但是没人看
尴尬
谢谢,搞定了,把接收到的数据放到中断外面处理就可以了
一周热门 更多>