深夜发帖,只因为STM32串口有关问题郁闷得睡不着

深夜发帖,只因为STM32串口问题郁闷得睡不着
就是我运行串口大师,设置完成后,RX不断接收数据,大多数为00.也有其他的。且速度越来越快,请问是什么原因?而自己发的数据很难看到。求解,等一晚上。如需其他代码也可一并贴上。

附中断函数代码
void USART1_IRQHandler(void) //串口1 中断服务程序,收到的字符回显到终端上
{
  unsigned int i;
 // GPIO_SetBits(GPIOC, GPIO_Pin_1);//点亮Led1测试是否进入中断
 // GPIO_ResetBits(GPIOC, GPIO_Pin_1);
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //判断读寄存器是否非空
  {
  /* Read one byte from the receive data register */
  RxBuffer1[RxCounter1++] = USART_ReceiveData(USART1); //将读寄存器的数据缓存到接收缓冲区里
  
  if(RxBuffer1[RxCounter1-2]==0x0d) //判断结束标志是否是0x0d
  {
for(i=0; i< RxCounter1; i++) 
TxBuffer1[i] = RxBuffer1[i]; //将接收缓冲器的数据转到发送缓冲区,准备转发
rec_f=1; //接收成功标志
Rec_Len=RxCounter1;
RxCounter1=0; 
// for(i=0; i<Rec_Len; i++)
// USART_SendData(USART1,TxBuffer1[i]+2); 
// while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); //USART_FLAG_TC发送完成标志位
  }
  }
  
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET) // USART_IT_TXE,发送中断 
  { 
  USART_ITConfig(USART1, USART_IT_TXE, DISABLE); //USART_ITConfig()使能或失能USART中断
  }
  if(USART_GetITStatus(USART1, USART_IT_TC) != RESET) //发送完成状态 
  { 
  tx_flag=1; 
  }
}

------解决方案--------------------
只要你把GPIO配置与板子一致,一般地,用ST的库是能正常工作的。

嗨,我现在搞它的USB,搞得头都大了
------解决方案--------------------
中断服务子函数中不要用 for循环,用if 通过多次进入中断处理。 还有发送中断要选择 发送寄存器空模式 或者 发送完中断模式 二选一 而不是两个都写,注意,进入中断后,软件清除中断标志位。
------解决方案--------------------
中断标志 是 硬件自动清除还是 软件清除????