STM32F103两种串口输出的方式 学习笔记(三)

#include "stm32f10x.h"    
#include "stm32f10x_rcc.h"    
#include "stm32f10x_gpio.h"    
#include "stm32f10x_usart.h"   
#include "stm32f10x_crc.h"  
#include "system_stm32f10x.h"   
#include "stdio.h" 

void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)  
{  
    USART_SendData(USARTx, Data);  
    while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET){}  
}  

void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str)    
{    
    while (0 != *str)    
    {    
        UART_PutChar(USARTx, *str);    
        str++;      
    }    
} 
int main(void)
{
 UART_PutStr(USART1,"hello world!\n"); 
}

个人觉得第一种比较人性化,容易理解。 

#include "delay.h"
#include "usart3.h"
#include "stdarg.h"	 	 
#include "stdio.h"	 	 
#include "string.h"	 
#include "timer.h"

//串口3,printf 函数
//确保一次发送数据不超过USART3_MAX_SEND_LEN字节
void u3_printf(char* fmt,...)  
{  
	u16 i,j; 
	va_list ap; 
	va_start(ap,fmt);
	vsprintf((char*)USART3_TX_BUF,fmt,ap);
	va_end(ap);
	i=strlen((const char*)USART3_TX_BUF);		//此次发送数据的长度
	for(j=0;j<i;j++)							//循环发送数据
	{
	  while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕   
		USART_SendData(USART3,USART3_TX_BUF[j]); 
	}
}

int main(void)
{

u3_printf("hello world");
} 

猜你喜欢

转载自blog.csdn.net/seek97/article/details/81319397