想请教一个问题,我用stm32F103芯片获取传感器ASCII码数据,在正常模式下,其应该发送的是数据应该是:“0”“.”0""0""0""1""\t""5""4""\r""\n",从示波器上看发送过来的数据没问题,但是我这边将读取的数据通过printf函数发送给串口调试助手,但是从助手上看只只有部分数据读取:"5""4""\r""\n",不知道哪里出问题了,请教各位了,谢谢,下面是相关函数。
void USART3_IRQHandler(void)
{
uint8_t ch;
// 接收数据
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART3, USART_IT_RXNE);// 清除中断标志
ch = USART_ReceiveData(USART3);
Com3RBuf[Com3Index]=(uint8_t)ch;
printf("ch=%d\r\n",(uint8_t)Com3RBuf[Com3Index]);
Com3Index++;
if(Com3RBuf[2]==0x0A))
{
Rec3FinishF=1;
Com3Index=0;
}
}
// 发送数据
else if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
{
USART_ClearITPendingBit(USART3, USART_IT_TXE);
if(Com3Index<Index3End)
{
USART_SendData(USART3, (uint8_t)Com3TBuf[Com3Index++]);
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) == RESET);
}
else
{
Com3Index=0;
USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
}
}
} |