32F4与TFmini激光通信。 谁能帮看一下啊中断处理有问题嘛

2019-07-20 00:50发布

本帖最后由 花儿随风 于 2019-7-10 19:53 编辑


void USART1_IRQHandler(void)                        //串口1中断服务程序
{
        static u8 i;
        u8 j=0,k=0;
        u16 check=0;
        u32 distance=0,strength=0;
       
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
                USART_RX_BUF=USART_ReceiveData(USART1);
                if(USART_RX_BUF[0]!=HEADER)
                {
                        i=0;
                }
                else if((i==1)&&(USART_RX_BUF[1]!=HEADER))
                {
                        i=0;
                }
                else if(i==8)
                {
                        for(j=0;j<8;j++)
                        {
                                check += USART_RX_BUF[j];                                                       
                        }
                        for(k=0;k<9;k++)
                        {
                                        printf("%x",USART_RX_BUF[k]);
                        }
                       
                        if(USART_RX_BUF[8]==(check%256))
                        {                       
                                printf("check = %d",check);
                                printf(" ");
                                distance = USART_RX_BUF[2] + USART_RX_BUF[3]*256;
                                strength = USART_RX_BUF[4] + USART_RX_BUF[5]*256;//计算信号强度值
                                printf("dist = %d",distance);                                       
                                printf(" ");
                                printf("strength = %d",strength);
                                printf(" ");                  //插入换行
                                i=0;
                        }
                       
                }
                else
                {i++;}

输出的数据    5959fdff45070fa    check = 762        dist = 65533        strength = 69     数据一成不变  跪求大佬解释
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。