本帖最后由 花儿随风 于 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 数据一成不变 跪求大佬解释
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>