USART1根据实际需要修改。
stm32的SR根据内核寄存器名称修改
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
LPC1768的串口重定向是一样的
int fputc(int ch, FILE *f)
{
while((LPC_UART0->LSR & 0x20)==0);//循环发送,直到THR为空
LPC_UART0->THR = (u8) ch;
return ch;
}
需要加
#include"stdio.h"
也可以使用下面的(待测试)
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
return ch;
}
2022.04.01
用stm32cubmx生成的工程,默认是不勾选use microLIB的,要勾选,否则printf函数不能使用,程序卡死。