串口接收AJ-SR04M数据用数组打印出来,搞不懂哪里有错

2019-07-21 04:01发布

本帖最后由 Diviner 于 2019-3-23 11:40 编辑

[mw_shl_code=applescript,true]// 串口2中断服务函数

void DEBUG_USART2_IRQHandler(void)
{
        char Temp2;
        flag=0;
        if(USART_GetITStatus(DEBUG_USART2,USART_IT_RXNE)!=RESET)
        {        

                Temp2 = USART_ReceiveData(DEBUG_USART2);
                //USART_SendData(DEBUG_USART1,Temp2);  
                D[l++]=Temp2;

        }         

}[/mw_shl_code]

[mw_shl_code=applescript,true]int main(void)
{        
        char *str="01";
        USART1_Config();
        USART2_Config();
        LED_GPIO_Config();      
        Usart_SendStr(DEBUG_USART2,(uint8_t*)str);
        printf( "串口printf函数测试 " );

  while (1)
{
  if(Temp2=='')
        {
                break;
        }
}
        LED2_ON;
printf("距离=");
  for(l=0;l<20;l++)
                {
                        printf("%c",D[l]);
                }

        while (1)
        {
        
        }
}[/mw_shl_code]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
szczyb1314
2019-07-21 05:28
你的main函数写的有问题,一上电,执行初始化,打印 串口printf函数测试,进入第一个while(1),这时全局变量Temp2是你的初始化的0,也就是'',if条件成立跳出第一个while(1);执行打印 距离=,进入for循环,此时的数组D里面的数据全是0,也就是'',全部打印,进入到第二个while(1).此时你的AJ-SR04M即使输出数据你也打印不出来了

执行结果跟你的程序设计完全一致。
至于你说的得不到你想要的结果,那是你的逻辑设计有问题。

一周热门 更多>