把所有调用串口函数 全放到串口模块来只需要在主函数调用就行
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)
{
}
}