STM32_HAL库串口printf函数重定义

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



///选择串口发送数据的类型
#define		HAL_USART		1	///
//#define	HAL_USART_DMA	1	///



/**
 * @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);///
	#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);///
	#endif
    
    while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET){}///<等待发送完成
    
	return ch; 
}






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

你可能感兴趣的:(链表,数据结构,指针)