GNU(gcc-arm-none-eabi)编译stm32代码,重定向printf问题

使用gnu编译的时候,printf底层实现已经不是fputc了,而是__write:
    int _write (int fd, char *pBuffer, int size)  
    {  
    for (int i = 0; i < size; i++)  
    {  
        while((USART1->SR&0X40)==0);//等待上一次串口数据发送完成  
        USART1->DR = (uint8_t) pBuffer[i];       //写DR,串口1将发送数据
    }  
    return size;  
    }

    用这个函数替换掉原先的fputc即可!

从大佬那获得的,附上大佬的帖子:http://www.openedv.com/forum.php?mod=viewthread&tid=231872&page=1#pid750613

另附一个stackoverflow帖子:https://stackoverflow.com/questions/39664071/how-to-make-printf-work-on-stm32f103

(用百度百度了一上午才找到这个__write,用stackoverflow一发就中,stackoverflow真强!!)

发布了16 篇原创文章 · 获赞 3 · 访问量 3085

猜你喜欢

转载自blog.csdn.net/qq_42704360/article/details/102853340
今日推荐