阅读下列程序在空格填上正确代码或注释并说明程序功能。重定向printf函数int fputcint ch FILE f 发送一个字节数据到USART1 ① USART1 uint8_t ch; 等待发送寄存器为空 while ② USART1 USART_FLAG_TXE == RESET; return ③
//重定向printf函数
int fputc(int ch, FILE f)
{
/ 发送一个字节数据到USART1*/
HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 0xFFFF); //发送数据
/*等待发送寄存器为空 */
while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY); //等待发送完成
return (ch); //返回发送的数据
}
//重定向scanf函数
int fgetc(FILE *f)
{
/*等待串口1输入数据 /
while (HAL_UART_Receive(&huart1, (uint8_t)(&ch), 1, 0xFFFF) != HAL_OK); //等待接收数据
return ch; //返回接收到的数据
}
程序功能:将printf和scanf函数重定向到USART1串口通信上,使得通过串口发送和接收数据时可以直接使用printf和scanf函数进行操作。具体实现方法是重定义fputc和fgetc函数,将其实现为使用HAL库中的UART通信函数对USART1进行数据的发送和接收。其中,fputc函数将发送的数据等待发送完成后再返回,fgetc函数将等待接收到数据后再返回
原文地址: https://www.cveoy.top/t/topic/hdHU 著作权归作者所有。请勿转载和采集!