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");
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章