首页 > 代码库 > [STM32F10x] 使用printf函数进行串口调试问题

[STM32F10x] 使用printf函数进行串口调试问题

  硬件: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);

  具体原因不详。

  

[STM32F10x] 使用printf函数进行串口调试问题