*說明:用于STM32F10XXX串口UART1通訊,可以將printf scanf等重定向到串口 *環(huán)境:KEIL FOR ARM MDK3.11 *硬件:對應PA9-UART1TX PA10-UART1RX,使用USART1 *版本:V0.1 *作者:alien2006 *備注:對應的PA9/PA10以及USART1已由UART_Init函數(shù)自身初始化,無需在程序中完成 ***************************************************************************************/ #ifndef __UART_INTERFACE_H #define __UART_INTEFFACE_H #include "stm32f10x_lib.h" #include "stdio.h" /*私有變量----------------------------------------------------------------------------*/ /*函數(shù)聲明----------------------------------------------------------------------------*/ void UART_Init(unsigned long UART_baud); //波特率,如115200 int fputc(int ch, FILE *f); //fputc重定向 int fgetc(FILE *f); //fgetc重定向 #endif 下面是.C的部分內(nèi)容,省去了初始化的部分,自己看著寫好了 /******************************************************************************* * Function Name : int fputc(int ch, FILE *f) * Description : Retargets the C library printf function to the USART.printf重定向 * Input : None * Output : None * Return : None *******************************************************************************/ int fputc(int ch, FILE *f) { /* Write a character to the USART */ USART_SendData(USART1, (u8) ch); /* Loop until the end of transmission */ while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET)) { } return ch; } /******************************************************************************* * Function Name : int fgetc(FILE *f) * Description : Retargets the C library printf function to the USART.fgetc重定向 * Input : None * Output : None * Return : 讀取到的字符 *******************************************************************************/ int fgetc(FILE *f) { /* Loop until received a char */ while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET)) { } /* Read a character from the USART and RETURN */ return (USART_ReceiveData(USART1)); } |
|
來自: rookie > 《技術(shù)帖》