在STM32L4R5中使用USART

时间:2019-04-15 11:04:30

标签: stm32

我正在USART上使用异步STM32L4R5与PC通信。我可以在PC端接收数据,但不能在PC发送的核板上接收任何数据。以下是我用于传输的代码

while (1)
{
  HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin); //Toggle LED
  HAL_Delay(1000);
  for(i = 0; i < 5; i++)
  {
      USART1->TDR = p[i];
      while((USART1->ISR  & 0x40) == 0);
  }
  while ((USART1->ISR & 0x20) == 0);
  uint32_t receivedByte = (uint32_t)(USART1->RDR);
}

在上述发送部分工作正常,但接收无效。我已经检查过并且接线正确。

1 个答案:

答案 0 :(得分:-1)

您为什么不仅使用USART接收中断,它将帮助您捕获接收到的数据。而不是轮询USART接收。 没有回应的原因有两个

  1. 在USART上发送数据时,您可能没有发送EOD和回车票。许多基于USART的操作都基于这些特征。模块将监听USART,直到收到这些字符为止。
  2. 您的硬件连接不正确。确保将TX连接到Host并连接到Slave的Rx,反之亦然。

我建议使用USART中断,因为在编写代码时轮询不是一个好方法。