任务是用stm32f103向一块超声波模块发送一个16进制指令
内容为55 aa 01 01 01 01
模块返回一个55 aa 01 01 xx xx xx的数据(xx为测量数据)
结果是串口监视串口显示打印接收到的数据只有55 aa(本应该是55 aa 01 01 xx xx xx的数据)
经过检查模块确实发送了7个16进制数回来,但为啥单片机只收到两个呢?
跪求大佬帮忙!
具体代码为
u8 rece[100];
u16 dist=0;
u8 relen=0;
int main(void)
{
u8 t=0;
u8 send[6];
u8 len=sizeof(send);
send[0]=0x55; send[1]=0xaa; send[2]=0x01; send[3]=0x01; send[4]=0x01; send[5]=0x01;
delay_init();
LED_Init();
KEY_Init();
BEEP_Init();
uart_init1(9600);
uart_init2(9600);
TIM3_PWM_Init(7199,9);
TIM_SetCompare2(TIM3,4700);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
while(1){
for(t=0;t<len;t++){
USART_SendData(USART1,send[t]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
LED0=0;
LED1=1;
delay_ms(1000);
//printf("\r\ndist=%d \r\n",dist);
}
}
void USART1_IRQHandler(void){
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)){
res= USART_ReceiveData(USART1);
printf("\r\nres=%x ",res);
}
}