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

mac2025-04-05  11

使用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真强!!)

最新回复(0)