stm32 printf 重定义

     printf重定义在嵌入式中是一个比较常见的问题,而新手在调试程序时有时候很容易忘记对printf进行重定义从而导致程序运行不下去,不熟悉的根本找不到为什么会出现这中情况,通过一段时间的学习自己整理了一个比较好的printf重定义方法:

步骤如下:

        1. 在主程序中加入 #include  “stdio.h”  // 这是标准C中包含printf的头文件,当然有时在一个完整的工程中可以不需要再加入了 因为有些工程中本身已经包含了这个头文件了 不过本人觉得为了程序以后的移植性好一点还是建议再加一遍。

         2.在main.c  文件中加入一下代码:

void uart_put(u8 dat)
{
         while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
         USART_SendData(USART1,dat);
}


int fputc(int ch, FILE *f)
{
         uart_put((u8)ch);
         return ch;
}  


int fgetc(FILE *f)
{
         /* Loop until received a char */
         while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET));
         /* Read a character from the USART and RETURN */
         return (USART_ReceiveData(USART1));
}


     3.把编译器 USE MicroLIB 勾选 如下图




至此我们的printf就已经重定义好了,在此工程中我们就可以很方便的使用printf输出,进行串口PC调试了。


本人第一次写博客,有什么错误的地方敬请拍砖,以达共同进步!

你可能感兴趣的:(stm32 printf 重定义)