初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2019-3-13
- 在线时间
- 8 小时
|
3金钱
本帖最后由 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函数测试\n" );
while (1)
{
if(Temp2=='\0')
{
break;
}
}
LED2_ON;
printf("距离=");
for(l=0;l<20;l++)
{
printf("%c",D[l]);
}
while (1)
{
}
}[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
你的main函数写的有问题,一上电,执行初始化,打印 串口printf函数测试,进入第一个while(1),这时全局变量Temp2是你的初始化的0,也就是'\0',if条件成立跳出第一个while(1);执行打印 距离=,进入for循环,此时的数组D里面的数据全是0,也就是'\0',全部打印,进入到第二个while(1).此时你的AJ-SR04M即使输出数据你也打印不出来了
执行结果跟你的程序设计完全一致。
至于你说的得不到你想要的结果,那是你的逻辑设计有问题。
|