文章目录
前言
- 芯片型号:STM32F103VCT6
- 串口:USART1
- 目的:重定义fputc函数到串口输出,实现printf
.
一、重定义fputc函数
-
写法1(我目前使用的)
int fputc(int ch, FILE *f) { /* 发送一个字节数据到USART1 */ USART1->SR; USART_SendData(USART1, (uint8_t) ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (ch); }
-
写法2(网上常见的)
int fputc(int ch, FILE *f) { /* 发送一个字节数据到USART1 */ USART_SendData(USART1, (uint8_t) ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); return (ch); }
-
写法3(网上常见的)
int fputc(int ch, FILE *f) { /* 判断串口是否发送完成 */ while((USART1->SR & 0X40) == 0); /* 发送一个字节数据到USART1 */ USART1->DR = (uint8_t) ch; return ch; }
-
一起交流一下鸭~
你们一般用的那种写法?
对以上三种写法有什么看法?你觉得各有什么利弊?
.
二、勾选Use MicroLib
.
三、main函数中应用printf输出
int main(void)
{
Usart1_init(115200); // 配置Usart1底层,波特率 - 115200
printf("\r\n 写这篇文章的作者是个超级大可爱 \r\n");
}
.
四、注意事项(问题现象:程序卡在fputc函数)
-
调用printf前要先做以下两点:
- 1、勾选Use MicroLib;
- 2、配置Usart1底层
.
五、小结
- 欢迎纠正
- ☆⌒(*^-゜)v THX!!
- 码字不易,记得点小心心 ( •̀ ω •́ )✧