单片机串口接收帧数据

接收15位帧数据

void USARTx_IRQHandler(void)                    //串口1中断服务程序-解析串口接收帧数据
{

    if(USART_GetIntStatus(USARTx, USART_INT_RXDNE) != RESET)
    {
//        USART_ClrFlag(USARTx,USART_INT_RXDNE);    
        ucCh  = USART_ReceiveData(USARTx);
        processing_data();
        USART_ClrFlag(USARTx,USART_FLAG_RXDNE);
    }            
}

void processing_data(void)
{
    switch(rec_flag)
        {
            case 0://帧头
                UART6_RX_BUF[0]= ucCh;
                if(UART6_RX_BUF[0] == 0x7F)
                {
                    rec_flag=1;
                }
                else             
                {
                    rec_flag=0;
                }
                break;
                
            case 1://长度
                UART6_RX_BUF[1]= ucCh;
                rec_flag=2;
                UART6_RX_STA=2;
                break;
                
            case 2:
                UART6_RX_BUF[UART6_RX_STA]= ucCh;
                UART6_RX_STA++;
                if(UART6_RX_STA > UART6_RX_BUF[1])
                {
                    rec_flag=3;
                }
                else             
                {
                    rec_flag=2;
                }
                break;
                
            case 3://帧尾
                UART6_RX_BUF[UART6_RX_STA]= ucCh;
                if(UART6_RX_BUF[UART6_RX_STA]== 0x7E)
                {
                    UART6_RX_STA=0;
                    rec_flag=0;
                    UART6ReceFullFlag=1;
                }
                else             
                {
                    rec_flag=0;
                }
                break;
                
            default:
                break;
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子盛凌然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值