串口 重定向printf串口发送stm32

把所有调用串口函数 全放到串口模块来只需要在主函数调用就行 

usart.c

在usart.c 的Usart_Init()后面增加 这两个函数


int fputc(int ch, FILE *f)
{
		USARTSendByte( USART1,  (uint8_t)ch);
		while( USART_GetFlagStatus( USART1,  USART_FLAG_TXE) == RESET);
		return (ch);
}
int fgetc(FILE *f)
{
		
		while( USART_GetFlagStatus( USART1,  USART_FLAG_RXNE) == RESET);
		
		return (int) USART_ReceiveData(USART1);

}

注意要加 #include "stdio.h" 去利用fputc 来用printf

fgetc 配合继电器 去完成接收

usart.h
#include "stm32f10x.h" 
#include "stdio.h"
void Usart_Init(void);
void USARTSendByte(USART_TypeDef* USARTx, uint16_t Data);
void USARTSendString( USART_TypeDef* USARTx, char *str);
int fputc(int ch, FILE *f);

主函数

main.c

#include "stm32f10x.h"                  // Device header
#include "usart.h"

void delay(uint16_t time)
{
		uint16_t i = 0;
		while(time--)
		{
			i=12000;
			while(i--);
		}
}

int main(void)
{

		Usart_Init();

		printf("甘boss");
		putchar('X');  //打印单字符
	
		while(1)
		{
			
			
			
		}
}

猜你喜欢

转载自blog.csdn.net/weixin_46016743/article/details/114458698