重定向
//usart
int fputc(int ch,FILE *F)
{
unsigned char temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,2);
return ch;
}
串口发送字符串和16进制
//main
uint8_t buf_str[]="ABC"; //定义字符串变量
uint16_t len=sizeof(buf_str);
uint8_t buf_char=0xD8; //定义16进制变量
HAL_UART_Transmit(&huart1,buf_str,len,1000); //发送字符串变量
while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束
HAL_UART_Transmit(&huart1,&buf_char,1,1000); //发送16进制变量
while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束
串口接收
//usart.h
// 接收缓存区
#define USART_REC_LEN 200 //定义最大接收字节数 200
#define EN_USART1_RX 1 //使能(1)/禁止(0)串口1接收
extern uint8_t USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern uint16_t USART_RX_STA; //接收状态标记
//用于缓存传输来的每一个字节
#define RXBUFFERSIZE 1 //缓存大小
extern uint8_t aRxBuffer[RXBUFFERSIZE];//HAL库USART接收Buffer
//usart.c
//从左 字符串截取函数
char * left(char *dst,char *src, int n)
{
char *p = src;
char *q = dst;
int len = strlen(src);
if(n>len) n = len;
while(n--) *(q++) = *(p++);
*(q++)='