//尝试过多种返回方式
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET) //接收中断
{
res=USART_ReceiveData(USART1);
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET);
//res=GetKey();
//USART_SendData(USART1,res+1);
printf("%u", res);
}
}
u8 RxCounter = 0;//定义计数值
u8 RxBuffer1[10];//定义缓冲区为10
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//串口接收中断
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);//清除标志位
RxBuffer1[RxCounter++] = USART_ReceiveData(USART1);
if(RxCounter>6)//定义接收的字节个数
{
RxCounter=0;
}
printf("%u", RxBuffer1[RxCounter]);
}
}
串口返回的是一堆混乱的数值。
改变不同的数据类型。
能正确返回值+1。
上位机发送的报文格式有没有?根据格式进行合成数然后加一
感觉你这个是多个原因造成的,你发送的1=49,返回值包含4个字符49=你发送的1,回车符=13,换行=10,另外00应该是你的null字符,应该和你的缓冲区格式有关系,十六进制或者字符,你先转换看看。另外就是你发送完成的处理是不是也有问题。一点一点查吧。