在MDK中使用printf及串口

平台:Keil-MDK

1.有用到printf的需将printf重定向到USART(加入下面这段程序)否则程序会因为找不到printf跑飞

“简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. ”


int fputc(int ch, FILE *f)
{
    USART_SendData(USART1, (uint8_t) ch);

    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

    return (ch);
}


int fgetc(FILE *f)
{
    
    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

    return (int)USART_ReceiveData(USART1);
}



2.两个串口都被占用同时不用使用printf的话,将程序中的printf都屏蔽掉。

(要find all,否则程序卡在哪里了你都不知道)


你可能感兴趣的:(STM32学习)