[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);

  具体原因不详。

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

posted @ 2015-01-01 19:09  Mr.Bike  阅读(509)  评论(0编辑  收藏  举报