前言
一、定义概念 + 缩写
1. fputc函数
全称是file output character, 文件输出字符函数
fputc 函数用于将标准输出重定向(如到USART),允许通过串口发送调试信息。
二、性质与例子
int fputc(int ch, FILE* f)
{
USART_SendData(USART1, (uint8_t)ch);
while
(USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET)
;
return (ch);
}
这段代码是一个简化的 fputc
函数实现,用于将字符通过 USART1发送出去,在32等嵌入式中常见。
详解如下:
USART_SendData(USART1, (uint8_t)ch);
- 这行代码调用
USART_SendData
函数,将字符ch
发送到 USART1。ch
被强制转换为uint8_t
类型,以确保与USART_SendData
函数的参数类型匹配。
while (USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET)
;
- 这是一个空循环,它等待直到 USART1 的传输数据寄存器为空(
USART_FLAG_TXDE
标志被设置)。USART_GetFlagStatus
函数检查指定的 USART 标志(在这个例子中是USART_FLAG_TXDE
)是否被设置。如果标志没有被设置(即等于RESET
),循环将继续执行,直到标志被设置为止。这确保了在下一个字符发送之前,当前的字符已经被完全发送出去。
return (ch);
- 最后,函数返回发送的字符
ch
。在fputc
函数的上下文中,返回值通常不是必需的,因为主要目的是将字符发送到 USART。然而,返回发送的字符可以使函数更加通用,或者在某些情况下提供额外的调试信息。
因此次此代码实现了将字符发送到 USART1 的 fputc
函数,并且等待直到字符被完全发送出去。这使得它非常适合用于重定向标准输出到 USART,以便在嵌入式系统中通过串口发送调试信息。