//重定向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函数将等待接收到数据后再返回

阅读下列程序在空格填上正确代码或注释并说明程序功能。重定向printf函数int fputcint ch FILE f 发送一个字节数据到USART1 ① USART1 uint8_t ch; 等待发送寄存器为空 while ② USART1 USART_FLAG_TXE == RESET;	 return ③

原文地址: https://www.cveoy.top/t/topic/hdHU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录