硬件:STM32F103C8T6

  平台:Keil ARM-MDk V5.11

 

  利用printf函数通过串口(USART)进行调试时遇到的一个问题:

  

    printf("Hello, Mini-M3");

  本意是想输出"Hello, Mini-M3",但是通过串口调试助手,得到的输出是"ello, Mini-M3",也就是第一个数据没有接收到,而且这种情况只会在初始化USART后第一次

  发送数据时出现。

  USART发送数据的代码如下:

  

int fputc(int c, FILE *stream)
{
    USART_SendData(UARTx, (U8)c);
    
    /* Loop until the end of transmission */
    while (USART_GetFlagStatus(UARTx, USART_FLAG_TC) == RESET);
    
    return c;   
}

  

  解决办法:

  在初始USART时,将SR寄存器中的TC标志位清零,即增加下面一条代码:

 USART_ClearFlag(UARTx, USART_FLAG_TC);

  具体原因不详。

/×××××××××××××××××××××××××××××××××××××××× THE END ×××××××××××××××××××××××××××××××××××××××××××××××××/  

相关文章:

  • 2021-11-17
  • 2021-05-08
  • 2022-12-23
  • 2022-01-15
  • 2021-06-25
  • 2022-12-23
  • 2021-11-17
猜你喜欢
  • 2021-07-18
  • 2021-12-06
  • 2021-12-03
  • 2021-07-18
  • 2022-12-23
  • 2021-07-25
相关资源
相似解决方案