u8 USARTFlag = 0;
void USART3_IRQHandler()
{
static u8 Count3 = 0; //计数
static u8 Rec3 = 0; //标记
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)// 如果有中断
{
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
Receive3=USART_ReceiveData(USART3); //存储数据
switch(Rec3) //rec开始是0,先进入case0
{
case 0:
if(Receive3 == 0xff) //是不是包头
Rec3 = 1; //是,置1
else
Rec3 = 0; //不是,清零
break;
case 1:
Rx3Buffer[Count3] = Receive3; //存到数组中
Count3++;
if(Count3 > 8) //一串结束了。
{
Rec3 = 0; //标记位清零
Flag3 = 1; //标志位为1
Count3 = 0;//计数清零
}
break;
}
不知道哪里错了,把接收的数组输出,正好数组第一个元素不是包头了,包头跑到最后一个去了
FF 04 00 00 00 01 D8 B4 变成了
04 00 00 00 01 D8 B4 FF
小弟跪谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>