STM32_HAL库串口printf函数重定义

#include "stdio.h"	//使用printf函数需引用的头文件



///选择串口发送数据的类型
#define		HAL_USART		1	///<HAL阻塞串口发送数据
//#define	HAL_USART_DMA	1	///<HAL_DMA串口发送数据



/**
 * @brief		定义printf函数结构体
 * 	
 */
struct FILE { 
	int handle; 

}; 

/**
 * @brief		重定向printf函数到串口
 * 	
 */
int fputc(int ch, FILE * f){
	#ifdef HAL_USART
		HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);///<普通串口发送数据
	#elif HAL_USART_DMA
    	HAL_UART_Transmit_DMA(&huart1,(uint8_t *)&ch,1);///<DMA串口发送数据
	#endif
    
  while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET){}///<等待发送完成
    
  return ch;
}

/**
  * @brief		重定向scanf函数到串口
  * 
  */
int fgetc(FILE * F) {
	uint8_t ch = 0;
	#ifdef HAL_USART
		HAL_UART_Receive(&huart1,&ch, 1, 0xffff);///<普通串口接收数据
	#endif
    
	#ifdef HAL_USART_DMA
    	HAL_UART_Receive_DMA(&huart1,(uint8_t *)&ch,1);///<DMA串口发送数据
	#endif
    
    while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET){}///<等待发送完成
    
	return ch; 
}






	printf(" Hello world! \r\n"); //调用串口输出函数测试内容

版权声明:本文为qq_26043945原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。