*说明:用于STM32F10XXX串口UART1通讯,可以将printf scanf等重定向到串口 *环境:KEIL FOR ARM MDK3.11 *硬件:对应PA9-UART1TX PA10-UART1RX,使用USART1 *版本:V0.1 *作者:alien2006 *备注:对应的PA9/PA10以及USART1已由UART_Init函数自身初始化,无需在程序中完成 ***************************************************************************************/ #ifndef __UART_INTERFACE_H #define __UART_INTEFFACE_H #include "stm32f10x_lib.h" #include "stdio.h" /*私有变量----------------------------------------------------------------------------*/ /*函数声明----------------------------------------------------------------------------*/ void UART_Init(unsigned long UART_baud); //波特率,如115200 int fputc(int ch, FILE *f); //fputc重定向 int fgetc(FILE *f); //fgetc重定向 #endif 下面是.C的部分内容,省去了初始化的部分,自己看着写好了 /******************************************************************************* * 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)); } |
|