不同于KEIL5,需要重定向fputc
在IAR中printf函数调用的不是fputc,而是putchar函数,所以需要重定向putchar函数,具体如下:
int putchar(int c)
{
USART_SendData_8bit(CW_UART1, (uint8_t) c);
while(USART_GetFlagStatus(CW_UART1, USART_FLAG_TXE) == RESET);
//while(USART_GetFlagStatus(CW_UART1, USART_FLAG_TXBUSY) == SET); //注释
return(c);
}
注意IAR编译时会报错,什么不认识-Write函数,
具体原因详见
一文解决printf()是如何与UART外设驱动函数“勾搭”起来的? - 知乎 (zhihu.com)
扒一扒中断为什么不能调printf___intrinsic __nounwind_嵌入式客栈的博客-优快云博客
解决方法:
重新定义putchar函数就OK了,不需要去重新定义write函数