27,517
社区成员
发帖
与我相关
我的任务
分享void USART1_IRQHandler(void)
{
u8 Res;
val = hc5951[0];
val2 = hc5951[1];
// if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
// {
// USART_RX_BUF[byte_count]=USART_ReceiveData(USART1);//(USART1->DR);
// byte_count++;
// }
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
printf("%d",Res);
USART_RX_BUF[rCnt] = Res;
if(rCnt == 0) //??0xFF
{
if(0xFF != Res)
{
rCnt = 0;
}else
{
rCnt = 1;
printf("帧头1开始\r\n");
}
}
else if(rCnt == 1)
{
if(0x5A != Res)
{
rCnt = 0;
}else
{
rCnt = 2;
printf("帧头2开始\r\n");
}
}
else if(rCnt>1)
{
// printf("22222222");
if(Res == 0x5B)
{
printf("22222222");
rCnt++;
printf("%d\r\n",rCnt);
}
else
{
// rCnt = 0;
printf("%d\r\n",rCnt);
}
}
else if(rCnt == 3)
{
printf("帧尾结束1\r\n");
if(0x5C != Res)
{
rCnt = 0;
}
else
{
rCnt = 0;
printf("帧尾结束2\r\n");
}
}
}
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
#endif 
这个是在串口助手中每一个字节单次发送的
这张图是一次发送的,为什么结果不一样,单片机好像在接收完第二个字节后就没有再触发串口的中断了
牛逼啊